You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite查询:如何计算分组SUM占总SUM的百分比

实现方案

完全可以在现有查询基础上增加逻辑实现占比计算,常用有两种实现方式:

方案1:使用窗口函数(推荐,兼容大部分现代数据库 MySQL 8+/PostgreSQL/SQL Server等)

窗口函数的计算范围不受GROUP BY分组限制,直接取2021年全量支出的总和即可:

SELECT 
    [Expense Category],
    SUM(Value) AS category_total,
    ROUND(SUM(Value) * 100.0 / SUM(SUM(Value)) OVER(), 2) AS percentage_of_total
FROM expenses
WHERE Year = 2021
GROUP BY [Expense Category]
ORDER BY category_total DESC
  • 说明:SUM(SUM(Value)) OVER() 里内层的SUM(Value)是分组后的类别总金额,外层的OVER()不加分区条件,会计算所有分组的类别总金额之和,也就是2021年全部支出总金额。乘以100.0是为了避免整数除法得到0的问题,示例中用ROUND保留了两位小数方便阅读,你可以根据需求调整精度。

方案2:使用标量子查询(兼容不支持窗口函数的旧版数据库)

如果你的数据库版本不支持窗口函数,可以单独查询全局总支出作为分母:

SELECT 
    [Expense Category],
    SUM(Value) AS category_total,
    ROUND(SUM(Value) * 100.0 / (SELECT SUM(Value) FROM expenses WHERE Year = 2021), 2) AS percentage_of_total
FROM expenses
WHERE Year = 2021
GROUP BY [Expense Category]
ORDER BY category_total DESC
  • 说明:子查询会独立计算2021年的全部支出总和,和外层的分组查询互不影响,可以直接用作占比计算的分母。

内容的提问来源于stack exchange,提问作者Lucian Mardale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:45:04