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

按年龄区间分组统计,需显示无数据区间的0计数问题

解决按年龄区间分组显示所有区间(含0值)的问题

要让所有定义好的年龄区间都显示,哪怕该区间没有数据,核心思路是先构造出所有需要的年龄区间集合,再和原表的统计结果做左连接,这样就能保留所有区间,无数据的区间count会被填充为0。

最终可行的SQL查询

WITH age_groups AS (
    SELECT '0-18' AS age_group UNION ALL
    SELECT '19-30' UNION ALL
    SELECT '31-35' UNION ALL
    SELECT '36-50' UNION ALL
    SELECT '50+'
)
SELECT 
    ag.age_group,
    COALESCE(p.count, 0) AS count
FROM age_groups ag
LEFT JOIN (
    SELECT 
        CASE 
            WHEN age BETWEEN 0 AND 18 OR age IS NULL THEN '0-18' 
            WHEN age BETWEEN 19 AND 30 THEN '19-30' 
            WHEN age BETWEEN 31 AND 35 THEN '31-35' 
            WHEN age BETWEEN 36 AND 50 THEN '36-50' 
            WHEN age BETWEEN 51 AND 100 THEN '50+' 
        END AS age_group, 
        COUNT(*) AS count 
    FROM patient_registration 
    GROUP BY age_group
) p ON ag.age_group = p.age_group
ORDER BY 
    CASE ag.age_group
        WHEN '0-18' THEN 1
        WHEN '19-30' THEN 2
        WHEN '31-35' THEN 3
        WHEN '36-50' THEN 4
        WHEN '50+' THEN 5
    END;

说明

  1. 构造固定区间集合:用WITH子句创建age_groups临时表,包含你需要的所有年龄区间,确保每个区间都被定义。
  2. 左连接统计结果:将临时表和原查询的统计结果做左连接,这样即使原查询中没有某区间的数据,临时表的该区间也会被保留。
  3. 填充0值:用COALESCE(p.count, 0)把左连接后出现的NULL替换为0,符合你的需求。
  4. 排序保证顺序:添加ORDER BY子句确保结果按年龄区间的逻辑顺序展示,避免字符串排序导致的顺序混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:55:13