我有一个如下所示的表格:
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之间的数字。我不确定您是否确实要将该数字格式化为百分比。