聚合函数,其输入与输出是多对一的关系,即将多条输入记录聚合成一条输出值。可以与SQL 中的 group by 语句联用。
COUNT
函数声明:
- bigint count([distinct|all] value)
函数说明:
该函数用于计算记录数。
参数说明:
distinct|all:指明在计数时是否去除重复记录,默认是 all,即计算全部记录,如果指定 distinct,则可以只计算唯一值数量。
value:可以为任意类型,当 value 值为 NULL 时,该行不参与计算,value 可以为 *,当 count(*) 时,返回所有行数。
返回值:
返回 Bigint 类型。
示例如下:
- -- 如表tbla有列col1类型为bigint
- +------+
- | COL1 |
- +------+
- | 1 |
- +------+
- | 2 |
- +------+
- | NULL |
- +------+
- select count(*) from tbla; -- 值为3,
- select count(col1) from tbla; -- 值为2
聚合函数可以和 group by 一同使用,例如:假设存在表 test_src,存在如下两列:key string 类型,value double 类型。
- -- test_src的数据为
- +-----+-------+
- | key | value |
- +-----+-------+
- | a | 2.0 |
- +-----+-------+
- | a | 4.0 |
- +-----+-------+
- | b | 1.0 |
- +-----+-------+
- | b | 3.0 |
- +-----+-------+
- -- 此时执行如下语句,结果为:
- select key, count(value) as count from test_src group by key;
- +-----+-------+
- | key | count |
- +-----+-------+
- | a | 2 |
- +-----+-------+
- | b | 2 |
- +-----+-------+
- -- 聚合函数将对相同key值得value值做聚合计算。下面介绍的其他聚合函数使用方法均与此例相同,不一一举例。
AVG
函数声明:
- double avg(double value)
- decimal avg(decimal value)
函数说明:
该函数用于计算平均值。
参数说明:
value:Double 类型或 Decimal 类型,若输入为 String 或 Bigint,会隐式转换到 Double 类型后参与运算,其它类型抛异常。当 value 值为 NULL 时,该行不参与计算。Boolean 类型不允许参与计算。
返回值:
若输入 Decimal 类型,返回 Decimal 类型,其他合法输入类型返回 Double 类型。
示例如下:
- -- 如表tbla有一列value,类型为bigint
- +-------+
- | value |
- +-------+
- | 1 |
- | 2 |
- | NULL |
- +-------+
- -- 则对该列计算avg结果为(1+2)/2=1.5
- select avg(value) as avg from tbla;
- +------+
- | avg |
- +------+
- | 1.5 |
- +------+
MAX
函数声明:
- max(value)
函数说明:
该函数用于计算最大值。
参数说明:
value:可以为任意类型,当列中的值为 NULL 时,该行不参与计算。Boolean 类型不允许参与运算。
返回值:
返回值的类型与 value 类型相同。
示例如下:
- -- 如表tbla有一列col1,类型为bigint
- +------+
- | col1 |
- +------+
- | 1 |
- +------+
- | 2 |
- +------+
- | NULL |
- +------+
- select max(value) from tbla; -- 返回值为2
MIN
函数声明:
- MIN(value)
函数说明:
该函数用于计算最小值。
参数说明:
value:可以为任意类型,当列中的值为 NULL 时,该行不参与计算。Boolean 类型不允许参与计算。
示例如下:
- -- 如表tbla有一列value,类型为bigint
- +------+
- | value|
- +------+
- | 1 |
- +------+
- | 2 |
- +------+
- | NULL |
- +------+
- select min(value) from tbla; -- 返回值为1
MEDIAN
函数声明:
- double median(double number)
- decimal median(decimal number)
函数说明:
该函数用于计算中位数。
参数说明:
number:Double 类型或者 Decimal 类型。若输入为 String 类型或 Bigint 类型,会隐式转换到 Double 类型后参与运算,其他类型报错。
返回值:
返回 Double 类型或者 Decimal 类型。
STDDEV
函数声明:
- double stddev(double number)
- decimal stddev(decimal number)
函数说明:
该函数用于计算总体标准差。
参数说明:
number:Double 类型或者 Decimal 类型。若输入为 String 类型或 Bigint 类型,会隐式转换到 Double 类型后参与运算,其他类型时报错。
返回值:
返回 Double 类型或者 Decimal 类型。
STDDEV_SAMP
函数声明:
- double stddev_samp(double number)
- decimal stddev_samp(decimal number)
函数说明:
该函数用于计算样本标准差。
参数说明:
number:Double 类型或者 Decimal 类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型时报错。
返回值:
返回 Double 类型或者 Decimal 类型。
SUM
函数声明:
- sum(value)
函数说明:
该函数用于计算汇总值。
参数说明:
value:Double、Decimal 或 Bigint 类型,若输入为 String 会隐式转换到 Double 类型后参与运算,当列中的值为 NULL 时,该行不参与计算。Boolean 类型不允许参与计算。
返回值:
输入为 Bigint 时,返回 Bigint,输入为 Double 或 String 时,返回 Double 类型。
示例如下:
- -- 如表tbla有一列value,类型为bigint
- +------+
- | value|
- +------+
- | 1 |
- +------+
- | 2 |
- +------+
- | NULL |
- +------+
- select sum(value) from tbla; -- 返回值为3
WM_CONCAT
函数声明:
- string wm_concat(string separator, string str)
函数说明:
该函数用指定的 spearator 做分隔符,链接 str 中的值。
参数说明:
separator:String 类型常量,分隔符。其他类型或非常量将引发异常。
str:String 类型,若输入为 Bigint,Double 或者 Datetime 类型,会隐式转换为 String 后参与运算,其它类型报异常。
返回值:
返回 String 类型。
备注:
语句select wm_concat(',', name) from test_src;中,若 test_src 为空集合,此条语句返回 NULL 值。
COLLECT_LIST
函数声明:
- ARRAY collect_list(col)
函数说明:
该函数在给定 group 内,将 col 指定的表达式聚合为一个数组。
参数说明:
col:表的某列,可为任意数据类型。
返回值:
返回 ARRAY 类型。
COLLECT_SET
函数声明:
- ARRAY collect_list(col)
函数说明:
该函数在给定 group 内,将 col 指定的表达式聚合为一个无重复元素的集合数组。
参数说明:
col:表的某列,可为任意数据类型。
返回值:
返回 ARRAY 类型。