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

如何编写SQL语句将多Status值合并为两组进行分组统计?

嘿,这个需求用CASE WHEN就能轻松实现,我给你两种实用的写法,适配不同的SQL场景:

方法一:通用兼容版(适配所有主流SQL数据库)

这是兼容性拉满的写法,不管你用MySQL、PostgreSQL、SQL Server还是Oracle都能正常运行:

SELECT
  CASE
    WHEN Status IN ('a', 'b', 'd') THEN 'I'
    WHEN Status IN ('e', 'f') THEN 'II'
    ELSE '其他' -- 可选,用来处理意料之外的状态值
  END AS status,
  COUNT(client) AS Count
FROM 你的表名 -- 记得替换成你实际的数据表名称
GROUP BY
  CASE
    WHEN Status IN ('a', 'b', 'd') THEN 'I'
    WHEN Status IN ('e', 'f') THEN 'II'
    ELSE '其他'
  END;

如果能确定数据表中只有a/b/d/e/f这几种状态,ELSE部分可以直接省略,让代码更简洁。

方法二:简化版(支持别名分组的数据库)

像MySQL、PostgreSQL这类允许在GROUP BY中使用SELECT列表别名的数据库,可以简化成下面的写法,看起来更清爽:

SELECT
  CASE
    WHEN Status IN ('a', 'b', 'd') THEN 'I'
    ELSE 'II' -- 确认无其他状态时可用
  END AS status,
  COUNT(*) AS Count
FROM 你的表名
GROUP BY status;

执行前记得把代码里的你的表名替换成你实际的表名,就能得到你想要的分组统计结果啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:27:39