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

如何在ClickHouse中按部分列分组并返回全列及COUNT聚合结果?

需求实现方案

完全可以在ClickHouse中实现这个需求,核心是利用窗口函数计算分组内的学生数量,无需额外子查询或关联操作。

实现思路

通过COUNT() OVER (PARTITION BY University, Program)窗口函数,按University和Program对数据分组,统计每个分组内的学生总数,并将该统计值附加到每一行对应的记录中,同时保留原表所有列。

示例查询语句

假设你的表名为student_records,执行以下SQL即可得到期望结果:

SELECT
    -- 保留原表所有列,也可明确列出需要的列:University, Student, Program
    *,
    COUNT(Student) OVER (PARTITION BY University, Program) AS student_count
FROM student_records;

效果说明

  • PARTITION BY University, Program:将数据按「大学+专业」维度拆分分组
  • COUNT(Student):统计每个分组内的学生数量
  • 窗口函数会自动将分组统计的student_count值匹配到该分组的每一行记录上,最终返回包含原表所有列和新增统计字段的结果集。

示例验证

如果原表数据如下:

UniversityStudentProgram
清华大学张三计算机科学
清华大学李四计算机科学
清华大学王五应用数学
北京大学赵六物理学

执行查询后会得到:

UniversityStudentProgramstudent_count
清华大学张三计算机科学2
清华大学李四计算机科学2
清华大学王五应用数学1
北京大学赵六物理学1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:54:51