两个group by和一个sum sql的合计百分比
我有一张如下所示的表格:两个group by和一个sum sql的合计百分比,sql,postgresql,percentage,Sql,Postgresql,Percentage,我有一张如下所示的表格: 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
------------------------------
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;
完全迷失了下一步的方向。您可以使用以下方法:
WITH sum_category AS
(
SELECT id, category,
SUM(spend) AS spend
FROM table_name
GROUP BY id, category
)
SELECT id, category,
ROUND(100 * spend / SUM(spend) OVER (PARTITION BY id)) AS spend_ratio
FROM sum_category
ORDER BY id, category;
尝试使用窗口功能:
SELECT id, category, SUM(spend),
SUM(spend) / SUM(SUM(spend)) OVER (PARTITION BY id) as ratio
FROM table
GROUP BY id, category;
这将生成一个介于0和1之间的数字。我不确定您是否真的想将数字格式化为百分比