我对我的查询结果感到困惑,并试图了解它是如何可能的。
我有一张记录每摘一朵花的记录:
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,对吧?既然我是按日期分组,他们怎么可能不呢?
但是,生成的数据集如下所示:
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考虑到上面的查询,这怎么可能?我做错了什么?
发布于 2018-11-06 02:26:08
这是猜测,但我认为你没有显示完整的数据集。
如果你跑:
select sum(prop)
from proportions那你就能拿到100美元左右了。因为你把比例乘以100。
这个总数将是100,无论它被分配了多少天。你的第一行是说0.286%的花是2018-07-16采摘的,以此类推。我只是认为结果集缺少了许多行,这些行会导致和为100。
https://stackoverflow.com/questions/53164219
复制相似问题