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

ClickHouse中如何从GROUP BY查询结果提取每个日期分组的首行数据

可以直接修改原有GROUP BY语句得到目标结果,无需嵌套子查询,也支持基于现有查询嵌套实现,两种实现方案如下:

最简实现(直接修改原查询,ClickHouse专属语法,性能最优)

ClickHouse提供专属的LIMIT n BY 分组字段语法,作用是按指定字段分组后,每组返回前n条记录。你只需要在原有查询的末尾新增一行LIMIT 1 BY Date即可:

SELECT 
    Date, Name, COUNT(Certificates) as Certificates
FROM Students.data
GROUP BY Date, Name
ORDER BY Date, Name
LIMIT 1 BY Date;

因为你原有查询已经通过ORDER BY Date, Name保证了每个日期下的记录按姓名升序排序,加上述限制后会自动取每个日期的第一条记录,完全匹配你的预期输出。

嵌套子查询实现(标准SQL写法,兼容性更强)

如果你需要将现有查询作为子查询嵌套使用,可以用窗口函数ROW_NUMBER实现分组取Top1逻辑:

SELECT Date, Name, Certificates
FROM (
    -- 原有查询逻辑作为内层子查询,新增分组排序序号
    SELECT 
        Date, 
        Name, 
        COUNT(Certificates) as Certificates,
        ROW_NUMBER() OVER (PARTITION BY Date ORDER BY Name ASC) AS row_num
    FROM Students.data
    GROUP BY Date, Name
) AS sub_query
WHERE row_num = 1
ORDER BY Date;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:21:02