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

如何按状态分组统计表数据,缺失状态类别统计结果显示为0

解决方法

核心思路是先构造包含所有需要统计的状态的临时集合,再通过左连接关联业务表统计数量,就能得到缺失状态的0计数结果。

具体SQL实现(兼容大部分数据库的通用写法)

SELECT 
    s.STATUS,
    COUNT(t.ID) AS TOTAL
FROM (
    -- 手动构造所有需要返回的状态列表
    SELECT 'Pending' AS STATUS
    UNION ALL
    SELECT 'Received' AS STATUS
    UNION ALL
    SELECT 'Resolved' AS STATUS
    UNION ALL
    SELECT 'Rejected' AS STATUS
) s
-- 左连接业务表,关联不上的状态对应业务表字段全为NULL
LEFT JOIN 你的表名 t ON s.STATUS = t.STATUS
GROUP BY s.STATUS
-- 可选:按你需要的状态顺序排序
ORDER BY FIELD(s.STATUS, 'Pending', 'Received', 'Resolved', 'Rejected');

注意事项

  • 统计计数不要用COUNT(*),必须统计业务表的非空字段(比如示例里的t.ID),否则左连接生成的NULL行也会被计数为1,得到错误结果
  • 如果需要额外添加业务过滤条件,必须写在LEFT JOIN的ON子句中,不能写在WHERE子句里,否则会过滤掉关联失败的0计数行。比如要统计近30天的数,写法为:
LEFT JOIN 你的表名 t ON s.STATUS = t.STATUS AND t.create_time >= DATE_SUB(NOW(), INTERVAL 30 DAY)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:45:02