SQL计算占比分布:基于表格数据统计各类型对应数量的百分比
实现SQL
首先假设你的原始数据表名为type_quant,可根据实际表名替换。
支持窗口函数的数据库(MySQL8.0+、PostgreSQL、SparkSQL、Hive等通用写法)
SELECT type, REPLACE(ROUND(quantitie * 100.0 / SUM(quantitie) OVER(), 2), '.', ',') AS percentage FROM type_quant;
不支持窗口函数的低版本数据库(如MySQL5.x)
SELECT type, REPLACE(ROUND(quantitie * 100.0 / total, 2), '.', ',') AS percentage FROM type_quant, (SELECT SUM(quantitie) AS total FROM type_quant) AS total_table;
逻辑说明
- 先计算全表
quantitie字段的总和,每条记录的quantitie除以总和后乘以100得到百分比数值 ROUND函数控制保留的小数位数,可根据需要调整第二个参数:要保留1位小数就填1,保留2位就填2,完全匹配示例输出的精度要求REPLACE函数将默认的小数点.替换为预期输出里使用的逗号,
内容的提问来源于stack exchange,提问作者scalacode
相关产品推荐
相关产品推荐

