sql - 两个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;
完全不知道下一步该去哪里..
解决方案
使用窗口函数:
SELECT id, category, SUM(spend),
SUM(spend) / SUM(SUM(spend)) OVER (PARTITION BY id) as ratio
FROM table
GROUP BY id, category;
这会将该值生成为 0 到 1 之间的数字。我不确定您是否真的想将数字格式化为百分比。
推荐阅读
- javascript - Photoshop 脚本 - 尝试替换项目根文件夹中的图像
- x86 - 我可以在不出错的情况下访问初始堆栈指针上方多远?
- javascript - 如何传递外部参数来减少回调?
- arduino - 错误:avrdude:stk500_getsync() 尝试 X of 10:不同步:resp=
- angular - 如何在主机 [Windows 服务器] nginx 之外的 docker 容器中连接到网站
- sql-server - 从存储过程调用 SOAP WebService(SQL Server 2012 - 不能使用 CLR!)
- c# - 如何使用 PdfSharp 确定内容以 pdf 结尾的位置
- prometheus - 如何获取在普罗米修斯中运行的节点数
- flutter - Flutter:http.post 对象
- python - 我想过滤掉一个非数字值并使用数据框中的另外两列(熊猫)计算它的新值