SQL 查找一列总数的百分比

面条

例如,我有一个员工每小时收到多少请求的表格:

员工 要求 小时
约翰 12 中午12点
南希 5 中午12点
约翰 4 下午1点

我想创建一个表,其中包含 (i) 员工,(ii) 他们在所有时间收到的请求总数,除以所有员工收到的请求总数。

所以结果表看起来像:

员工 百分比请求
约翰 0.76
南希 0.24

因为:

John 的请求总和 / 请求总数 = (12+4)/(12+4+5)=0.76

Nancy 的请求总和 / 请求总数 = 5/(12+4+5)=0.24

我尝试先按小时分组时对单个员工的请求求和,但我不确定如何将总请求的总和合并到一个命令中。

很容易找出总请求的总和是多少,但我只知道如何先在单独的查询中找到它,然后手动将每个员工的总请求除以总和。我希望能够在一个查询中完成。

戈登·利诺夫

使用窗口函数:

select employee, sum(requests) as total_requests,
       sum(requests) * 1.0 / sum(sum(requests)) over () as ratio
from t
group by employee;

* 1.0仅仅是为了避免整数除法(假设requests是一个整数)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章