一、数值运算
-
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
。