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

SQL group by分组统计如何对齐指定列表并给缺失类型补0

解决方案

核心思路是先生成包含所有期望输出类型{a,b,c,d}的完整维度列表,再和业务统计结果做左关联,没有匹配到的类型统计值自动补0即可。

通用兼容写法(适配绝大多数SQL数据库)

SELECT 
    t.type,
    COUNT(your_table.type) AS type_count
FROM (
    -- 构造全量期望类型列表
    SELECT 'a' AS type
    UNION ALL SELECT 'b'
    UNION ALL SELECT 'c'
    UNION ALL SELECT 'd'
) AS t
LEFT JOIN your_table ON t.type = your_table.type
GROUP BY t.type
ORDER BY t.type;

说明:使用COUNT(your_table.type)而非COUNT(*)是因为左关联未匹配的行中your_table.type为NULL,COUNT会自动跳过NULL值,最终返回0,完全符合补0需求。使用前请将your_table替换为实际业务表名。

特定数据库简化写法

MySQL 8.0+/PostgreSQL

可直接用VALUES构造类型列表,语法更简洁:

SELECT 
    t.type,
    COUNT(your_table.type) AS type_count
FROM (
    VALUES ('a'),('b'),('c'),('d')
) AS t(type)
LEFT JOIN your_table ON t.type = your_table.type
GROUP BY t.type
ORDER BY t.type;

存在类型字典表的场景

如果业务侧有单独存储全量类型的字典表type_dict,无需硬编码类型,可直接关联字典表:

SELECT 
    t.type,
    COUNT(your_table.type) AS type_count
FROM type_dict t
LEFT JOIN your_table ON t.type = your_table.type
-- 若只需返回指定4种类型可打开下方注释
-- WHERE t.type IN ('a','b','c','d')
GROUP BY t.type
ORDER BY t.type;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 02:54:02