You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用GROUP BY实现分组统计并合并同计数的状态值?

实现方法解析

没问题,这个统计需求完全可以通过GROUP BY结合条件判断来实现,而且方法还挺灵活的!核心思路是把需要合并的state值映射到同一个分组,再按新分组统计数量。

通用SQL方案(适配绝大多数数据库)

用CASE WHEN语句将b和c统一归为b,c分组,其他state保持原值,之后按这个新分组聚合统计:

SELECT 
  CASE 
    WHEN state IN ('b', 'c') THEN 'b,c'
    ELSE state 
  END AS state,
  COUNT(*) AS `count(*)`
FROM a
GROUP BY state;

代码说明:

  • CASE WHEN负责定义分组规则:只要state是b或c,就合并到b,c分组,其他state单独成组;
  • GROUP BY state这里的state是我们通过CASE生成的别名,会按照新的分组规则聚合数据;
  • COUNT(*)统计每个分组的记录数,输出结果完全匹配你期望的格式。

简化版(部分数据库支持)

如果你的数据库支持IF函数比如MySQL,可以把代码简化成更简洁的版本:

SELECT 
  IF(state IN ('b', 'c'), 'b,c', state) AS state,
  COUNT(*) AS `count(*)`
FROM a
GROUP BY state;

结果验证

用你提供的测试数据运行上述SQL,会得到完全符合预期的统计结果:

statecount(*)
a2
b,c2
d1

这种方法的优势是扩展性很强,如果后续需要合并其他state值,只需要修改IN里的条件或者新增CASE WHEN分支就行。

内容的提问来源于stack exchange,提问作者liuxingpuuu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:25:51