全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
MaxCompute

聚合函数

更新时间:2017-10-10 23:05:55

聚合函数,其输入与输出是多对一的关系,即将多条输入记录聚合成一条输出值。可以与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 类型后参与运算,其他类型报错。

返回值

返回 Double 类型或者 Decimal 类型。

STDDEV

函数声明

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

函数说明

该函数用于计算总体标准差。

参数说明

number:Double 类型或者 Decimal 类型。若输入为 String 类型或 Bigint 类型,会隐式转换到 Double 类型后参与运算,其他类型时报错。

返回值

返回 Double 类型或者 Decimal 类型。

STDDEV_SAMP

函数声明

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

函数说明

该函数用于计算样本标准差。

参数说明

number:Double 类型或者 Decimal 类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型时报错。

返回值

返回 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 为空集合,此条语句返回 NULL 值。

COLLECT_LIST

函数声明

  1. ARRAY collect_list(col)

函数说明

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

参数说明

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

返回值

返回 ARRAY 类型。

COLLECT_SET

函数声明

  1. ARRAY collect_list(col)

函数说明

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

参数说明

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

返回值

返回 ARRAY 类型。

本文导读目录