聚合函数
聚合函数是指对一组值计算,并返回单个值的计算结果。 除了 COUNT(*) 外,聚合函数都会忽略 Null 值。 聚合函数通常与 SELECT 语句的 GROUP BY 子句一起使用。
所有聚合函数均为确定性函数。 换言之,每次使用一组特定的输入值调用聚合函数时,它们所返回的值都是相同的。
APPROX_COUNT_DISTINCT
APPROX_COUNT_DISTINCT( expression ) 计算组中每行的表达式,并返回组中唯一非空值的近似数。 此函数旨在跨响应速度比绝对精度更为关键的大型数据集进行聚合。
使用 APPROX_COUNT_DISTINCT
此示例返回学生表中不同主键的近似数。
SELECT APPROX_COUNT_DISTINCT(TestKey) AS result
FROM db1.students;
下面是结果集:
result
------------------------
12456
结合使用 APPROX_COUNT_DISTINCT 和 GROUP BY
此示例返回学生表中不同主键的近似数。
SELECT AGE, APPROX_COUNT_DISTINCT(O_OrderKey) AS Result
FROM db1.students
GROUP BY AGE
ORDER BY AGE;
下面是结果集。
AGE Result
---------------------------------------------------------------- ------------------------
11 7397838
12 7387803
13 388036
CHECKSUM_AGG
CHECKSUM_AGG ( [ ALL | DISTINCT ] expression ) 函数返回组中各值的校验和。 CHECKSUM_AGG 将忽略 null 值。
参数 | 介绍 |
---|---|
ALL | 向所有值应用此聚合函数。 ALL 为默认参数。 |
DISTINCT | 指定 CHECKSUM_AGG 返回唯一值的校验和。 |
expression | 整数表达式。 |
分析函数
分析函数基于一组行计算聚合值。 但是,与聚合函数不同,分析函数可能针对每个组返回多行。 可以使用分析函数来计算移动平均线、运行总计、百分比或一个组内的前 N 个结果。
CUME_DIST
函数会计算某个值在某个值组内的累积分布。 换言之,CUME_DIST 计算某指定值在一组值中的相对位置。 假定采用升序,行 r 中 CUME_DIST 的值定义为低于或等于行 r 的值的行数除以在分区或查询结果集中求出的行数。
语法:
CUME_DIST( )
OVER ( [ partition_by_clause ] order_by_clause )
partition_by_clause 将 FROM 子句结果集划分为要应用函数的分区。 如果未指定 partition_by_clause 参数,则 CUME_DIST 将查询结果集的所有行视为单个组。 order_by_clause 确定操作发生的逻辑顺序。