SQL分组统计:如何将指定字段多值合并为一组统计?
实现DIF字段分组时合并c、d为一组的SQL方案
可以通过自定义分组规则来实现将c和d合并统计,以下是几种通用的实现方式:
方法1:使用CASE WHEN(通用所有SQL数据库)
这是最通用的写法,几乎所有主流SQL数据库(MySQL、PostgreSQL、SQL Server、Oracle等)都支持:
SELECT CASE WHEN DIF IN ('c', 'd') THEN 'cd' ELSE DIF END AS grouped_dif, COUNT(*) AS count FROM tableA GROUP BY grouped_dif;
逻辑说明:通过CASE语句将DIF字段的'c'、'd'值统一替换为'cd',其他值保持不变,最后按替换后的grouped_dif字段分组统计数量。
方法2:使用IF函数(仅MySQL/MariaDB适用)
如果是MySQL或MariaDB,可以用更简洁的IF函数替代CASE WHEN:
SELECT IF(DIF IN ('c', 'd'), 'cd', DIF) AS grouped_dif, COUNT(*) AS count FROM tableA GROUP BY grouped_dif;
逻辑和方法1一致,只是语法更简洁,适合简单的二分支判断场景。
补充说明
- 注意表名不要加空格,原问题中的
table A应该写成tableA或者用反引号包裹(比如`table A`),避免语法错误。 - 如果需要保持分组结果的顺序,可以在语句末尾添加
ORDER BY grouped_dif;,让结果按a、b、cd的顺序展示。
内容的提问来源于stack exchange,提问作者mlwacosmos
相关产品推荐
相关产品推荐

