我试图在ClickHouse中返回表中的所有列,但是我想将Program中的students作为一个字段进行计数.理想情况下,查询应该返回University, Student, Program, student_count.计数将是有多少个‘程序’以University为单位进行分组.下面是一个查询示例

SELECT 
    University,
    Program, 
    Student,
    COUNT(Program) as student_count
FROM 
    table
GROUP BY 
    University

示例数据:

| University  | Student   | Program   |
| ----------- | --------- | --------- |
| University A| Student 1 | Program A |
| University A| Student 2 | Program A |
| University A| Student 3 | Program B |
| University B| Student 4 | Program A |
| University B| Student 5 | Program B |

所需日期:(用谷歌翻译翻译)

| University  | Student  |Program   |student_count|
| ----------- | ---------| -------- | ----------- | 
| University A| Student 1| Program A|2            |
| University A| Student 2| Program A|2            |
| University A| Student 3| Program B|1            |
| University B| Student 4| Program A|1            |
| University B| Student 5| Program B|1            |

我的问题是,ClickHouse有可能做到这一点吗?如果可能,它将如何实现?

推荐答案

Clickhouse确实支持标准window functions,因此:

SELECT 
    University,
    Program, 
    Student,
    count(*) over (partition by University, Program) as student_count
FROM 
    table;

Sql相关问答推荐

如何使用PostGIS从单个表中 Select 所有相交面组

计算周时出现SQL错误结果

编写一个SQL查询来返回收视率较高的类型,并取这些收视率的平均值,我该如何做呢?

如何从Spark SQL的JSON列中提取动态数量的键值对

在Postgres中合并相似的表

将JSON文件导入Postgres 16数据库时出错(22P04上次预期列之后的额外数据)

如何在连接中使用三个不同的列,从而在PostgreSQL中只获得两个列?

如果另一个表中不存在值列,则插入失败

如何在AWS Athena中 Select JSON数组的最后一个元素?

如何将不同层次的产品组和规格组合到最深一层?

使用与JOIN一起使用的查询后进行分页和排序

使用特定的Order By子句随机化SQL输出

从重复值中获取最新值

SQL JSON_QUERY 使用列中的值构造 json 路径并接收错误

使用多个数据库调用重载 CQRS 模式

我们可以使用连接改进包含多个子查询的查询吗

SQL的左连接在多对多关系情况下使用

雅典娜弄错了操作顺序

为数组中的每个元素从表中收集最大整数

snowflake插入覆盖行为