mysql - 将具有不同值的行分组并重命名

标签 mysql sql

如何对具有不同值的组行进行分组并重命名,同时对其他列求和。

|  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”列相加。

最佳答案

MySQL 似乎没有regexp_replace() 函数,可以使用的一个技巧是按CASE 表达式分组,例如:

select
  (case
    when dept like 'Car%' then 'Car'
    when dept in ('MC1', ...) then 'MC' 
    when ...
   end) dept,
  sum(...),
  sum(...)
from ...
group by
  (case
    when dept like 'Car%' then 'Car'
    when dept in ('MC1', ...) then 'MC' 
    when ...
   end)

我认为 MySQL 中的 group by 与标准 SQL 语法不同,它是不必要的,无论如何它在大多数其他数据库系统中都是强制性的,因此最好将它用于最终的迁移目的..

关于mysql - 将具有不同值的行分组并重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27968818/

相关文章:

数据库 |高级分面搜索

mysql - 我可以自动重命名/替换 2 个或更多表和 View 吗?

mysql - 从mysql select语句中获取重复的数据

php - SQL 语句/php 代码来处理一本书的许多作者

mysql按顺序计数零

php - 交易情况的基本模式

mysql - 返回 MySQL 中单个列中所有可能的值组合

python - 一种将非常大的 csv 数据写入 SQL 数据库的方法

SQL如何使作业运行?

SQL 服务器 : Insert two stored procedure results into one table