欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

clickhouse学习笔记-7-数据聚合

程序员文章站 2024-03-25 11:12:04
...

一、数值运算

  • sum 简单求和

  • sumWithOverflow

    同步求和参数的数据类型,只适用于数字

  • sumIf 条件求和

    ifNull(x, alt)

    x - 是否为空值

    alt - 为空,函数返回的值

  • intDivOrZero 除法

  • round

二、类型判断

  • ifNull

三、分组

argMin、argMax
argMin(arg, val)
取val最小时的arg值。如果有多个arg对应同一个最小值val,取遇到的第一个值,argMax同理

-- 应用
SELECT
    id,
    country,
    argMax(uuid,local_modify_date) AS uuid,
    argMax(name,local_modify_date) AS name
FROM
    db.table_name
GROUP BY
    id,
    country

如果存在GROUP BY子句,则在该子句中必须包含一个表达式列表。其中每个表达式将会被称之为“key”。 SELECT,HAVING,ORDER BY子句中的表达式列表必须来自于这些“key”或聚合函数。简而言之,被选择的列中不能包含非聚合函数或key之外的其他列。

如果查询表达式列表中仅包含聚合函数,则可以省略GROUP BY子句,这时会假定将所有数据聚合成一组空“key”。

与SQL标准不同的是,如果表中不存在任何数据(可能表本身中就不存在任何数据,或者由于被WHERE条件过滤掉了),将返回一个空结果,而不是一个包含聚合函数初始值的结果。

在GROUP BY子句中不支持使用Array类型的列。

常量不能作为聚合函数的参数传入聚合函数中。例如: sum(1)。这种情况下你可以省略常量。例如:count()

NULL 处理

对于GROUP BY子句,ClickHouse将 NULL 解释为一个值,并且支持NULL=NULL