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

SQL如何实现嵌套分组并统计组内元素个数

解决方案

你需要的组内二次计数可以通过两层分组聚合实现,核心逻辑是先完成Col1、Col2维度的去重分组,再基于这个结果按Col1维度做二次统计。

可直接运行的SQL代码

SELECT
    Col1,
    COUNT(*) AS col1_group_count,
    GROUP_CONCAT(Col2) AS col2_values,
    GROUP_CONCAT(Col3) AS col3_values
FROM (
    -- 第一层分组:按Col1、Col2去重,基于你原有逻辑调整
    SELECT
        Col1,
        Col2,
        GROUP_CONCAT(DISTINCT Col3) AS Col3
    FROM tablename
    GROUP BY Col1, Col2
) AS first_level_group
GROUP BY Col1;

运行结果说明

针对你提供的测试数据:

  • B组下存在(B,R)、(B,S)两个独立的Col1+Col2分组,因此col1_group_count返回2,符合你的预期
  • A、C、D、E、G组下都仅有1个Col1+Col2分组,计数返回1

注意:你插入的测试数据中F组对应(F,U)、(F,V)两个不同的Col1+Col2组合,因此F组的计数会返回2。如果你预期F组计数为1,请核对F组对应行的Col2字段值是否正确。

逻辑解释

  • 内层子查询复用了你原本写的Col1、Col2分组逻辑,仅给Col3的拼接加了DISTINCT,避免像B组Col2=R对应的两条重复blue值被拼接成blue,blue
  • 外层查询对内层输出的去重一级分组结果,再按Col1做二次聚合,这时候COUNT(*)统计的就是每个Col1下包含的独立Col1+Col2分组数量,正好匹配你要的二次分组计数需求,同时可以拼接对应Col2、Col3的取值列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:48:53