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

SQL如何实现多列分组时分别统计各层级的聚合计数值

错误原因

你原有SQL按major和minor两个字段共同分组,count()统计的是每个(major, minor)组合的行数,因此无法拿到单个major维度下的总记录数。

实现方案

方案1:窗口函数(适配支持窗口函数的主流SQL版本,如MySQL 8.0+、PostgreSQL、Oracle等)

通过分区统计直接得到两个维度的计数,写法简洁:

SELECT DISTINCT
    major,
    minor,
    COUNT(*) OVER(PARTITION BY major) AS major_count,
    COUNT(*) OVER(PARTITION BY major, minor) AS minor_count
FROM `table`

方案2:子查询关联(适配不支持窗口函数的旧版SQL)

先单独统计每个major的总条数,再和(major, minor)维度的统计结果关联:

SELECT
    a.major,
    a.minor,
    b.major_count,
    COUNT(*) AS minor_count
FROM `table` a
INNER JOIN (
    SELECT major, COUNT(*) AS major_count
    FROM `table`
    GROUP BY major
) b ON a.major = b.major
GROUP BY a.major, a.minor, b.major_count

两种方案运行后均可得到你需要的统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:54:03