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

SQL使用GROUP BY分组统计时未匹配分类如何返回0值

解决方案

你可以手动构造全量分类的临时结果集,再左关联原有的销量统计结果,对空值补0即可,无需依赖物理存在的分类主表。

完整SQL语句

SELECT 
    c.category,
    COALESCE(s.total, 0) AS total
FROM (
    -- 手动枚举所有5个图书分类
    SELECT 'comic' AS category
    UNION ALL SELECT 'horror'
    UNION ALL SELECT 'novel'
    UNION ALL SELECT 'romance'
    UNION ALL SELECT 'history'
) c
LEFT JOIN (
    -- 原有统计周期内的销量统计逻辑
    SELECT 
        category, 
        SUM(quantity) AS total
    FROM tbl 
    WHERE date BETWEEN '2021-09-01' AND '2021-09-07'
    GROUP BY category
) s ON c.category = s.category;

实现说明

  • 内层c表通过UNION ALL手动拼接所有需要返回的分类,相当于临时生成了一个虚拟分类主表
  • 用LEFT JOIN保留所有分类行,对应统计周期内无销量的分类,关联后的total字段会返回NULL
  • COALESCE函数负责将空的total值替换为0,符合输出要求
    如果后续图书分类有调整,只要在c表的UNION ALL部分增删对应分类枚举项即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:39:02