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

如何在SQL的GROUP BY中合并特定类型并汇总统计数量

如何在SQL中实现自定义分组统计?

现有一张名为transport的表,结构及数据如下:

id | type
---+------
1  | plane
2  | plane
3  | ferry
4  | ferry
5  | car
6  | car
7  | bus
8  | train

执行常规分组统计语句:

select type, count(*) from transport group by type;

得到结果:

type  | count
------+------
plane | 2
ferry | 2
car   | 2
bus   | 1
train | 1

需求是将car、bus、train归为一类(显示为car)并汇总数量,最终得到如下结果:

type   | count
-------+------
plane  | 2
ferry  | 2
car    | 4

当然可以直接在SQL中实现该需求,无需在应用层做求和处理。核心思路是用自定义分组规则替换原type字段后再分组统计,推荐使用标准SQL的CASE WHEN语句来实现,兼容性最好:

SELECT
  CASE
    WHEN type IN ('car', 'bus', 'train') THEN 'car'
    ELSE type
  END AS type,
  COUNT(*) AS count
FROM transport
GROUP BY CASE
    WHEN type IN ('car', 'bus', 'train') THEN 'car'
    ELSE type
  END;

如果你的数据库支持在GROUP BY中使用查询字段的别名(比如PostgreSQL、MySQL 8.0+、SQL Server等),可以简化成:

SELECT
  CASE
    WHEN type IN ('car', 'bus', 'train') THEN 'car'
    ELSE type
  END AS type,
  COUNT(*) AS count
FROM transport
GROUP BY type;

部分数据库(如MySQL)还支持更简洁的IF函数写法:

SELECT
  IF(type IN ('car', 'bus', 'train'), 'car', type) AS type,
  COUNT(*) AS count
FROM transport
GROUP BY type;

以上语句执行后都能得到你需要的分组统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:53:19