数据分组聚合需求:指定项保留、分组求和与其余项归组计算
数据分组汇总解决方案
可以通过SQL的CASE WHEN语句对名称进行分组,再结合SUM()函数汇总计数,具体实现如下:
SELECT CASE WHEN name = 'a' THEN 'a' WHEN name IN ('b', 'c', 'd') THEN 'group_B' ELSE 'others' END AS name, SUM(count) AS count FROM your_table_name GROUP BY CASE WHEN name = 'a' THEN 'a' WHEN name IN ('b', 'c', 'd') THEN 'group_B' ELSE 'others' END;
逻辑说明
- 用
CASE WHEN判断每条数据的name字段:- 等于
'a'时保留原名称 - 属于
('b','c','d')时标记为'group_B' - 其他所有名称统一标记为
'others'
- 等于
- 通过
GROUP BY按分组后的名称聚合,用SUM(count)计算每组的总计数
执行后得到的结果如下:
| name | count |
|---|---|
| a | 1000 |
| group_B | 300 |
| others | 300 |
内容的提问来源于stack exchange,提问作者derrdji
相关产品推荐
相关产品推荐

