聚合函数

最近更新时间:2023-06-21 15:21:58

我的收藏

函数

函数名
功能描述
COUNT([ ALL ] expression | DISTINCT expression1 [, expression2]*)
默认情况和 ALL 时,返回 expression 表达式筛选后,非 NULL 值的输入行数。如果是 DISTINCT,则会先对数据进行去重,然后再进行统计总行数。
COUNT(*) COUNT(1)
返回输入的总行数,含 NULL 值。
AVG([ ALL | DISTINCT ] expression)
默认情况和 ALL 时,返回 expression 表达式筛选后,所有输入的算术平均值。如果是 DISTINCT,则会先对数据进行去重,然后再进行统计求平均。
SUM([ ALL | DISTINCT ] expression)
默认情况和 ALL 时,返回 expression 表达式筛选后,所有输入和。如果是 DISTINCT,则会先对数据进行去重,然后再进行统计求和。
MAX([ ALL | DISTINCT ] expression)
默认情况和 ALL 时,返回 expression 表达式筛选后,所有输入的最大值(不可用于 TIMESTAMP 类型)。如果是 DISTINCT,则会先对数据进行去重,然后再进行统计求最大值。
MIN([ ALL | DISTINCT ] expression)
默认情况和 ALL 时,返回 expression 表达式筛选后,所有输入的最小值(不可用于 TIMESTAMP 类型)。如果是 DISTINCT,则会先对数据进行去重,然后再进行统计求最小值。
STDDEV_POP([ ALL | DISTINCT ] expression)
默认情况和 ALL 时,返回 expression 表达式筛选后,所有输入的总体标准差。如果是 DISTINCT,则会先对数据进行去重,然后再进行统计求总体标准差。
STDDEV_SAMP([ ALL | DISTINCT ] expression)
默认情况和 ALL 时,返回 expression 表达式筛选后,所有输入的样本标准差。如果是 DISTINCT,则会先对数据进行去重,然后再进行统计求样本标准差。
VAR_POP([ ALL | DISTINCT ] expression)
默认情况和 ALL 时,返回 expression 表达式筛选后,所有输入的总体方差。如果是 DISTINCT,则会先对数据进行去重,然后再进行统计求总体方差。
VAR_SAMP([ ALL | DISTINCT ] expression) VARIANCE([ ALL | DISTINCT ] expression)
默认情况和 ALL 时,返回 expression 表达式筛选后,所有输入的样本方差。如果是 DISTINCT,则会先对数据进行去重,然后再进行统计求样本方差。两种写法等价。
COLLECT([ ALL | DISTINCT ] expression)
默认情况和 ALL 时,返回 expression 表达式筛选后,所有输入的非 NULL 输入的 MULTISET 集合(允许重复值)。如果所有值都是 NULL,则返回一个空集。
RANK()
返回某个数据在一组数据中的排名,前后调用的结果可能不连续。例如有五个数据,其中两个并列第二,那么 RANK() 的结果是1、2、2、4、5。
DENSE_RANK()
返回某个数据在一组数据中的排名,前后调用的结果保证连续。例如有五个数据,其中两个并列第二,那么 RANK() 的结果是1、2、2、3、4。
ROW_NUMBER()
为一组数据的每行分配一个递增且连续的值,从1开始,不会重复。例如有五个数据,其中两个并列第二,那么 RANK() 的结果是1、2、3、4、5。
LEAD(expression [, offset] [, default] )
在窗口计算中,访问当前行之后 offset 行的数据,默认 offset 为1,即访问下一行的数据。default 表示无数据时的默认值,如果不提供,默认为 NULL。
LAG(expression [, offset] [, default])
在窗口计算中,访问当前行之前 offset 行的数据,默认 offset 为1,即访问上一行的数据。default 表示无数据时的默认值,如果不提供,默认为 NULL。
FIRST_VALUE(expression)
返回一系列数据中,第一个数据。
LAST_VALUE(expression)
返回一系列数据中,最后一个数据。
LISTAGG(expression [, separator])
将一组数据使用给定的分隔符进行连接,最终返回一个连接后的字符串。默认分隔符是半角逗号 ,。类似于其他语言的 String.join() 方法。

示例

为方便演示,建立示例测试数据表 Test:
id
site_id
count
date
1
1
45
2021-07-10
2
3
100
2021-07-13
3
1
230
2021-07-14
4
2
10
2021-07-14
5
5
205
2021-07-14
6
4
13
2021-07-15
7
3
220
2021-07-15
8
5
545
2021-07-16
9
3
201
2021-07-17

COUNT

功能描述:统计总行数。 语法:COUNT([ ALL ] expression | DISTINCT expression1 [, expression2] * ) 示例测试语句:SELECT COUNT(*) FROM Test;测试结果:
测试语句
测试结果(nums)
SELECT COUNT(*) AS nums FROM Test;
9
SELECT COUNT(DISTINCT site_id) AS nums FROM Test;
5

AVG

功能描述: 统计求平均。 语法:AVG([ ALL | DISTINCT ] expression) 示例测试语句: SELECT AVG(count) FROM Test; 测试数据和结果:
测试语句
测试结果(nums)
SELECT AVG(count) AS nums FROM Test;
176.3

SUM

功能描述:统计求和。 语法: SUM([ ALL | DISTINCT ] expression) 示例测试语句: SELECT SUM(count) FROM Test; 测试数据和结果:
测试语句
测试结果(nums)
SELECT SUM(count) AS nums FROM Test;
1569

MAX

功能描述:统计求最大值。 语法: MAX([ ALL | DISTINCT ] expression) 示例测试语句: SELECT MAX(count) FROM Test; 测试数据和结果:
测试语句
测试结果(nums)
SELECT MAX(count) AS nums FROM Test;
545

MIN

功能描述:统计求最小值。 语法: MIN([ ALL | DISTINCT ] expression) 示例测试语句: SELECT MIN(count) FROM Test; 测试数据和结果:
测试语句
测试结果(nums)
SELECT MIN(count) AS nums FROM Test;
13

STDDEV_POP

功能描述:统计求总体标准差。 语法: STDDEV_POP([ ALL | DISTINCT ] expression) 示例测试语句: SELECT STDDEV_POP(count) FROM Test; 测试数据和结果:
测试语句
测试结果(pop)
SELECT STDDEV_POP(count) AS pop FROM Test;
156.18

VAR_POP

功能描述:统计求总体方差。 语法: VAR_POP([ ALL | DISTINCT ] expression) 示例测试语句: SELECT VAR_POP(count) FROM Test; 测试数据和结果:
测试语句
测试结果(pop)
SELECT VAR_POP(count) AS pop FROM Test;
24390.7

FIRST_VALUE

功能描述:返回一系列数据中,第一个数据。 语法: FIRST_VALUE(expression) 示例测试语句: SELECT FIRST_VALUE(count) FROM Test; 测试数据和结果:
测试语句
测试结果(first)
SELECT FIRST_VALUE(count) AS first FROM Test;
45

LAST_VALUE

功能描述:返回一系列数据中,最后一个数据。 语法: LAST_VALUE(expression) 示例测试语句: SELECT LAST_VALUE(count) FROM Test; 测试数据和结果:
测试语句
测试结果(last)
SELECT LAST_VALUE(count) AS last FROM Test;
201