Mysql中Group By自定义分组

Mysql中Group By自定义分组

Mysql中Group By自定义分组

1. 问题描述

最近开发遇到这种情况,需要统计不同类型的物品的数量,但是某几种类型要合并到一起进行统计,例如:有A,B,C,D,E,F,G其中类型,但是统计时ACD合计为一种,FG合计为一种,假设表为:

type(类型)number(数量)
A8
B5
C12
D15
E3
F5
G7

2. 期望结果

需要得到如下的数据表格

type(类型)number(数量)
ACD35
B5
E3
FG12

3. 解决方案

采用case when语句解决,sql语句如下

SELECT 
CASE WHEN `type` IN('A','C','D') THEN 'ACD'
WHEN `type` IN ('F', 'G') THEN 'FG'
ELSE `type` END AS `types`, SUM(num)
FROM demo
GROUP BY `types` 

等同于:
SELECT 
CASE WHEN `type` IN('A','C','D') THEN 'ACD'
WHEN `type` IN ('F', 'G') THEN 'FG'
ELSE `type` END AS `types`, SUM(num)
FROM demo
GROUP BY 
CASE WHEN `type` IN('A','C','D') THEN 'ACD'
WHEN `type` IN ('F', 'G') THEN 'FG'
ELSE `type` END

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://xianyum.cn/archives/work-2

Buy me a cup of coffee ☕.