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

SQL技术求助:如何显示包含NULL值的category分组统计结果

解决方案

你的问题核心是当前SQL逻辑会把income为NULL的行归到'Gaji Rata-rata'分组,且统计方式会忽略NULL相关的计数。要单独显示包含NULL值的category分组,可按以下方式修改代码:

WITH gaji_kat AS (
SELECT
    *,
    CASE
        WHEN income IS NULL THEN NULL  -- 为NULL的income单独标记category为NULL
        WHEN income < 20000 THEN 'Gaji Rendah'
        WHEN income > 50000 THEN 'Gaji Tinggi'
        ELSE 'Gaji Rata-rata'
    END category
FROM accounts)

SELECT
    category,
    COUNT(*)  -- 用COUNT(*)统计所有行,避免忽略NULL值的计数
FROM gaji_kat
GROUP BY 1

关键调整说明:

  • CASE表达式新增NULL判断分支:把income为NULL的行单独归类为NULL的category,这样GROUP BY时会自动形成独立分组。
  • 替换统计函数:COUNT(category)会忽略列值为NULL的行,改用COUNT(*)可以统计分组内的所有行数,确保NULL分组的数量准确显示。

如果需要确保所有可能的category(包括NULL)即使没有对应数据也能显示(计数为0),可以用预定义所有分类再左连接的方式:

WITH all_categories AS (
    SELECT 'Gaji Rendah' AS category UNION ALL
    SELECT 'Gaji Tinggi' AS category UNION ALL
    SELECT 'Gaji Rata-rata' AS category UNION ALL
    SELECT NULL AS category
),
gaji_kat AS (
SELECT
    CASE
        WHEN income IS NULL THEN NULL
        WHEN income < 20000 THEN 'Gaji Rendah'
        WHEN income > 50000 THEN 'Gaji Tinggi'
        ELSE 'Gaji Rata-rata'
    END category
FROM accounts)

SELECT
    ac.category,
    COUNT(gk.category) AS count
FROM all_categories ac
LEFT JOIN gaji_kat gk ON ac.category = gk.category
GROUP BY ac.category

内容的提问来源于stack exchange,提问作者Fathin Nawwar Marhadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:27:23