PySQL 单查询实现同列两行数据占比计算并生成单独pct列
实现代码
写法1(兼容所有主流数据库,无窗口函数依赖)
SELECT t.*, ROUND((t.value / total.sum_val) * 100, 2) AS pct FROM 你的表名 t CROSS JOIN ( SELECT SUM(value) AS sum_val FROM 你的表名 ) total
写法2(支持窗口函数的数据库可用,代码更简洁)
SELECT *, ROUND((value / SUM(value) OVER()) * 100, 2) AS pct FROM 你的表名
注意事项
- 已修正原公式的运算优先级问题,将
a/a+b调整为a/(a+b),避免结果计算错误 - 两种写法均为单条查询,未使用WITH子句,符合要求
内容的提问来源于stack exchange,提问作者Malathy
相关产品推荐
相关产品推荐

