首页 > 解决方案 > 两个group by和总和sql的百分比

问题描述

我有一个如下所示的表格:

id     Category     Spend
------------------------------
00001    Apple       10
00001    Oranges     4
00001    Apple       21
00001    Oranges     50
00002    Oranges     32
00002    Apple       2
00002    Oranges     31
Etc.

我正在寻找一个可以显示以下内容的表格

id     Category     Spend_Ratio
------------------------------
00001    Apple       36%
00001    Oranges     64%
00002    Apple       3%
00001    Oranges     97%

逻辑是根据 ID 的类别支出分组产生一个比率。

我已经做到了这一点:

SELECT id, category, SUM(spend)
FROM table
GROUP BY id, category;

完全不知道下一步该去哪里..

标签: sqlpostgresqlpercentage

解决方案


使用窗口函数:

SELECT id, category, SUM(spend),
       SUM(spend) / SUM(SUM(spend)) OVER (PARTITION BY id) as ratio
FROM table
GROUP BY id, category;

这会将该值生成为 0 到 1 之间的数字。我不确定您是否真的想将数字格式化为百分比。


推荐阅读