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

如何在COUNT/GROUP BY查询中添加分组内单条序列号示例列

修改SQL查询以添加分组示例序列号

原始数据

CategorySerial Number
Sports3462
Sports4373
Sports3453
Auto7742
Auto1247
Auto3463
Auto1242
Auto7746

期望查询结果

CategorySerial Number CountExample Serial Number
Sports33462
Auto57742

注:原示例中Auto的计数应为5,与原始数据条目数一致

原查询语句

SELECT
   Category,
   COUNT( [Serial Number] ) AS [Serial Number Count]
FROM
    abcDB
GROUP BY
    Category

修改后的查询语句

通用方案(适用于多数数据库)

使用MIN/MAX这类通用聚合函数获取分组内任意一个序列号,所有关系型数据库基本都支持:

SELECT
   Category,
   COUNT( [Serial Number] ) AS [Serial Number Count],
   MIN( [Serial Number] ) AS [Example Serial Number]
FROM
    abcDB
GROUP BY
    Category

特定数据库优化方案

  • MySQL:用ANY_VALUE()函数更直观表达“取任意值”的意图:
    SELECT
       Category,
       COUNT( [Serial Number] ) AS [Serial Number Count],
       ANY_VALUE( [Serial Number] ) AS [Example Serial Number]
    FROM
        abcDB
    GROUP BY
        Category
    
  • SQL Server:若需指定取分组内第一条数据,可结合窗口函数:
    WITH RankedData AS (
        SELECT
            Category,
            [Serial Number],
            ROW_NUMBER() OVER (PARTITION BY Category ORDER BY (SELECT NULL)) AS rn
        FROM abcDB
    )
    SELECT
        Category,
        COUNT( [Serial Number] ) OVER (PARTITION BY Category) AS [Serial Number Count],
        [Serial Number] AS [Example Serial Number]
    FROM RankedData
    WHERE rn = 1
    GROUP BY Category, [Serial Number]
    

说明

  • MIN/MAX会返回分组内最小/最大的序列号,满足“任意一条”的要求;
  • ANY_VALUE()是MySQL专属函数,无需指定排序,直接返回分组内任意数据;
  • 窗口函数方案适合需要精确控制取数规则的场景,仅需任意值时前两种方案更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:45:22