首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中的相对比例

SQL中的相对比例
EN

Stack Overflow用户
提问于 2018-11-06 00:30:35
回答 1查看 59关注 0票数 0

我对我的查询结果感到困惑,并试图了解它是如何可能的。

我有一张记录每摘一朵花的记录:

代码语言:javascript
复制
WITH unique_picks AS(

SELECT 
date(pick_timestamp_local) as date
,flower_species
FROM all_picks
WHERE country_id = 1

),

proportions AS(
select 
date
, flower_species
, 100. * count(*) / sum(count(*)) over () as prop
from unique_picks
group by 1,2
ORDER BY 1
)

SELECT 
date
,sum(prop) as total_proportions
FROM proportions
GROUP BY date
ORDER BY date

每天都有一个以上的采摘(从来没有0),所以每天每种花的比例之和应该是1,对吧?既然我是按日期分组,他们怎么可能不呢?

但是,生成的数据集如下所示:

代码语言:javascript
复制
  date       total_proportions
1 2018-07-16             0.286
2 2018-07-17             0.646
3 2018-07-18             0.591
4 2018-07-19             0.656
5 2018-07-20             0.635
6 2018-07-21             0.699

考虑到上面的查询,这怎么可能?我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-06 02:26:08

这是猜测,但我认为你没有显示完整的数据集。

如果你跑:

代码语言:javascript
复制
select sum(prop)
from proportions

那你就能拿到100美元左右了。因为你把比例乘以100。

这个总数将是100,无论它被分配了多少天。你的第一行是说0.286%的花是2018-07-16采摘的,以此类推。我只是认为结果集缺少了许多行,这些行会导致和为100。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53164219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档