全部产品
MaxCompute

聚合函数

更新时间:2017-09-15 14:12:15   分享:   

聚合函数,其输入与输出是多对一的关系,即将多条输入记录聚合成一条输出值。可以与SQL中的group by语句联用。

COUNT

函数声明:

  1. bigint count([distinct|all] value)

用途:计算记录数。

参数说明:

  • distinct|all:指明在计数时是否去除重复记录,默认是all,即计算全部记录,如果指定distinct,则可以只计算唯一值数量。
  • value:可以为任意类型,当value值为NULL时,该行不参与计算,value可以为,当count()时,返回所有行数。

返回值:Bigint类型。

示例:

  1. -- 如表tbla有列col1类型为bigint
  2. +------+
  3. | COL1 |
  4. +------+
  5. | 1 |
  6. +------+
  7. | 2 |
  8. +------+
  9. | NULL |
  10. +------+
  11. select count(*) from tbla; -- 值为3,
  12. select count(col1) from tbla; -- 值为2

聚合函数可以和group by一同使用,例如:假设存在表test_src,存在如下两列:key string类型,value double类型,

  1. -- test_src的数据为
  2. +-----+-------+
  3. | key | value |
  4. +-----+-------+
  5. | a | 2.0 |
  6. +-----+-------+
  7. | a | 4.0 |
  8. +-----+-------+
  9. | b | 1.0 |
  10. +-----+-------+
  11. | b | 3.0 |
  12. +-----+-------+
  13. -- 此时执行如下语句,结果为:
  14. select key, count(value) as count from test_src group by key;
  15. +-----+-------+
  16. | key | count |
  17. +-----+-------+
  18. | a | 2 |
  19. +-----+-------+
  20. | b | 2 |
  21. +-----+-------+
  22. -- 聚合函数将对相同key值得value值做聚合计算。下面介绍的其他聚合函数使用方法均与此例相同,不一一举例。

AVG

函数声明:

  1. double avg(double value)
  2. decimal avg(decimal value)

用途:计算平均值。

参数说明:

  • value:Double类型或Decimal类型,若输入为string或bigint会隐式转换到double类型后参与运算,其它类型抛异常。当value值为NULL时,该行不参与计算。Boolean类型不允许参与计算。

返回值:若输入Decimal类型,返回Decimal类型,其他合法输入类型返回Double类型。

示例:

  1. -- 如表tbla有一列value,类型为bigint
  2. +-------+
  3. | value |
  4. +-------+
  5. | 1 |
  6. | 2 |
  7. | NULL |
  8. +-------+
  9. -- 则对该列计算avg结果为(1+2)/2=1.5
  10. select avg(value) as avg from tbla;
  11. +------+
  12. | avg |
  13. +------+
  14. | 1.5 |
  15. +------+

MAX

函数声明:

  1. max(value)

用途:计算最大值。

参数说明:

  • value:可以为任意类型,当列中的值为NULL时,该行不参与计算。Boolean类型不允许参与运算。

返回值:与value类型相同。

示例:

  1. -- 如表tbla有一列col1,类型为bigint
  2. +------+
  3. | col1 |
  4. +------+
  5. | 1 |
  6. +------+
  7. | 2 |
  8. +------+
  9. | NULL |
  10. +------+
  11. select max(value) from tbla; -- 返回值为2

MIN

命令格式:

  1. MIN(value)

用途:计算最小值。

参数说明:

  • value:可以为任意类型,当列中的值为NULL时,该行不参与计算。Boolean类型不允许参与计算。

示例:

  1. -- 如表tbla有一列value,类型为bigint
  2. +------+
  3. | value|
  4. +------+
  5. | 1 |
  6. +------+
  7. | 2 |
  8. +------+
  9. | NULL |
  10. +------+
  11. select min(value) from tbla; -- 返回值为1

MEDIAN

函数声明:

  1. double median(double number)
  2. decimal median(decimal number)

用途:计算中位数。

参数说明:

  • number:Double类型或者Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。当输入值为NULL时忽略。

返回值:Double类型或者Decimal类型。

STDDEV

函数声明:

  1. double stddev(double number)
  2. decimal stddev(decimal number)

用途:计算总体标准差。

参数说明:

  • number:Double类型或者Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。当输入值为NULL时忽略。

返回值:Double类型或者Decimal类型。

STDDEV_SAMP

命令格式:

  1. double stddev_samp(double number)
  2. decimal stddev_samp(decimal number)

用途:计算样本标准差。

参数说明:

  • number:Double类型或者Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。当输入值为NULL时忽略。

返回值:Double类型或者Decimal类型。

SUM

函数声明:

  1. sum(value)

用途:计算汇总值。

参数说明:

  • value:Double、decimal或bigint类型,若输入为string会隐式转换到double类型后参与运算,当列中的值为NULL时,该行不参与计算。Boolean类型不允许参与计算。

返回值:输入为bigint时返回bigint,输入为double或string时返回double类型。

示例:

  1. -- 如表tbla有一列value,类型为bigint
  2. +------+
  3. | value|
  4. +------+
  5. | 1 |
  6. +------+
  7. | 2 |
  8. +------+
  9. | NULL |
  10. +------+
  11. select sum(value) from tbla; -- 返回值为3

WM_CONCAT

函数声明:

  1. 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为空集合,这MaxCompute SQL条语句返回NULL值。聚合函数,其输入与输出是多对一的关系,即将多条输入记录聚合成一条输出值。可以与SQL中的group by语句联用。

COLLECT_LIST

函数声明:

  1. ARRAY collect_list(col)

用途:在给定group内,将col指定的表达式聚合为一个数组。

参数说明:

  • col:表的某列,可为任意数据类型。

返回值:ARRAY类型。

COLLECT_SET

函数声明:

  1. ARRAY collect_list(col)

用途:在给定group内,将col指定的表达式聚合为一个无重复元素的集合数组。

参数说明:

  • col:表的某列,可为任意数据类型。

返回值:ARRAY类型。

本文导读目录
本文导读目录
以上内容是否对您有帮助?