如何对具有不同值的组行进行分组并重命名,同时汇总其他列。
| Dept | Value 1 | Value 2 | Value 3 |
| Car1 | 2 | 4 | 9 |
| Car2 | 2 | 8 | 9 |
| Car3 | 1 | 4 | 9 |
| MC1 | 2 | 4 | 9 |
| MC2 | 2 | 7 | 9 |
| MC3 | 2 | 4 | 9 |
| RV1 | 2 | 4 | 5 |
| RV2 | 2 | 34 | 9 |
| RV3 | 3 | 4 | 9 |
我想将car1,car2,car3组合成一行名为Car,MC1,MC2,MC3的单行名称为Motorcycle,并将RV1,RV2,RV3分成一行命名为RV。列"值1,值2和值3"总结为每个小组。
答案 0 :(得分:1)
MySQL似乎没有regexp_replace()
函数,可以使用的一个技巧是按CASE
语句进行分组,例如:
select
(case
when dept like 'Car%' then 'Car'
when dept in ('MC1', ...) then 'MC'
when ...
end case) dept,
sum(...),
sum(...)
from ...
group by
(case
when dept like 'Car%' then 'Car'
when dept in ('MC1', ...) then 'MC'
when ...
end case)
我认为MySQL中group by
是不必要的,与标准SQL语法不同,无论如何它在大多数其他数据库系统中都是必需的,因此最好将其用于最终的迁移目的。