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

SQL问题:如何将同类型空Group行的数量计入非空Group行统计?

解决方案

你的原始SQL仅完成了基础的分组统计,未实现将同Type下空Group的数量合并到对应非空Group的逻辑。以下是满足需求的SQL语句:

WITH base_stats AS (
    -- 统计每个Type+Group的原始数量
    SELECT 
        type, 
        `group`,  -- MySQL用反引号,PostgreSQL替换为双引号
        COUNT(*) AS original_count
    FROM your_table  -- 替换为你的实际表名
    GROUP BY type, `group`
),
null_group_totals AS (
    -- 提取每个Type下Group为空的总数量
    SELECT 
        type, 
        original_count AS null_total
    FROM base_stats
    WHERE `group` IS NULL
)
SELECT 
    bs.type,
    bs.`group`,
    -- 非空Group数量=原始数量+同Type空Group数量;空Group保留原始统计数
    CASE
        WHEN bs.`group` IS NOT NULL THEN bs.original_count + COALESCE(ngt.null_total, 0)
        ELSE bs.original_count
    END AS amount
FROM base_stats bs
LEFT JOIN null_group_totals ngt ON bs.type = ngt.type
ORDER BY bs.type, bs.`group`;

关键说明:

  1. 用CTE拆分逻辑:
    • base_stats:先获取每个Type和Group的基础统计值。
    • null_group_totals:单独统计每个Type下Group为空的数量。
  2. 通过LEFT JOIN将空Group的数量关联到同Type的非空Group,COALESCE处理无空Group的Type(如Kiwi),避免计算出现NULL。
  3. CASE语句区分计算逻辑:非空Group叠加同Type空Group的数量,空Group保留原始统计结果。
  4. group是SQL关键字,需用反引号/双引号包裹,避免语法错误。

执行后会得到你需要的结果:

TypeGroupAmount
AppleA2
AppleC3
Apple1
KiwiB1
KiwiC1
Orange2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:45:38