Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中的相对比例_Sql - Fatal编程技术网

SQL中的相对比例

SQL中的相对比例,sql,Sql,我对我的查询结果感到困惑,并试图理解这是怎么可能的 我有一张每次采花的记录表: 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 ()

我对我的查询结果感到困惑,并试图理解这是怎么可能的

我有一张每次采花的记录表:

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

鉴于上述问题,这怎么可能?我做错了什么

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

如果您运行:

select sum(prop)
from proportions
那么你应该得到100个左右。因为你把这个比例乘以100


这个总数将是100,不管它被分成多少天。你的第一行是说0.286%的花是在2018-07-16采摘的,以此类推。我只是认为结果集缺少一堆行,这将导致总和为100。

我删除了不兼容的数据库标记。仅使用您真正使用的数据库进行标记。我不太熟悉这种表示法,但看起来您的
prop
字段的计算方式是:特定日期采摘的特定花朵的总和除以所有时间采摘的所有花朵的计数。唯一的办法就是只采一种花,而且只采一天。如果我完全猜测,我会说你想要
,100.*计数(*)/总计(计数(*)超过(花卉物种)作为道具