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

使用GROUP BY获取分组首行b值及分组计数的SQL查询问题

实现按列分组并获取首行指定列值及分组数量的单条SQL语句

可以通过窗口函数结合子查询实现单条SQL完成需求,不用拆分两个独立查询。假设你的表名为your_table,SQL语句如下:

SELECT a, b, count
FROM (
    SELECT 
        a,
        b,
        COUNT(*) OVER (PARTITION BY a) AS count,
        ROW_NUMBER() OVER (PARTITION BY a ORDER BY (SELECT NULL)) AS rn
    FROM your_table
) t
WHERE rn = 1;

语句说明:

  • COUNT(*) OVER (PARTITION BY a):通过窗口函数直接计算每个a分组下的总条目数,无需单独分组统计。
  • ROW_NUMBER() OVER (PARTITION BY a ORDER BY (SELECT NULL)):给每个a分组内的行分配唯一编号,ORDER BY (SELECT NULL)表示不指定特定排序规则,直接取分组内的首行;如果需要按某列排序取首行,比如按c列升序排列,可改为ORDER BY c ASC。
  • 外层查询筛选出每个分组中编号为1的行,即可得到每个分组的首行b值及对应分组的条目数量。

验证结果:

针对你提供的原表数据,执行上述语句后将得到:

abcount
1x2
2y1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:54:55