简介
聚集函数,是对集合执行计算,并返回单个值的函数。除了 COUNT(*)
外,聚集函数都会忽略 null 值。所有的聚集函数均为确定性函数。换言之,每次使用同一组特定的输入值来调用聚集函数时,它们所返回的值都是相同的1。通常情况下,聚合函数往往与 GROUP BY 子句或 OVER 子句结合使用。与 GROUP BY 结合用来计算集合中不同分组的聚集。与 OVER 子句结合用来计算特定范围内的值的聚集。
应用场景
聚集函数适用于,对集合数据进行汇总,而不需要将它们实际数据检索出来2。例如:统计集合总数、最大值、最小值等。
考虑以下情况:统计集合总数。
方案一:使用聚集函数COUNT
,如SELECT COUNT(*) FROM TABLE_NAME;
。
方案二:先从表中获取所有集合数据,再实现统计操作。
首先,返回实际表数据是对时间和计算机资源的一种浪费。其次,如果是网络程序,还将涉及到网络IO,会大大影响程序运行效率。
聚集函数
聚集函数 | 作用 |
---|---|
APPROX_COUNT_DISTINCT | 返回集合中唯一非空值的近似总个数。此函数保证最多 2% 的错误率,概率在 97% 内。 |
AVG | 返回集合中各值的平均值,忽略 null 值。 |
CHECKSUM_AGG | 返回集合中各值的校验和,忽略 null 值。 |
COUNT | 返回集合中找到的总个数,返回值类型为 int。 |
COUNT_BIG | 返回集合中找到的总个数,返回值类型为 bigint。 |
GROUPING | 是否聚合 GROUP BY 列表中的指定列表表达式。如果 GROUPING 返回 1 则表示聚合;返回 0 则表示不聚合。 |
GROUPING_ID | 返回计算分组级别。 |
MAX | 返回集合中最大值。 |
MIN | 返回集合中最小值。 |
STDEV | 返回集合中的标准差。 |
STDEVP | 返回集合中的总体标准差。 |
STRING_AGG | 通过分隔符将集合里的值串联起来,不能在字符串末添加分隔符。 |
SUM | 返回集合中所有值的和,只能用于数字列,忽略 null 值。 |
VAR | 返回集合中所有值的方差。 |
VARP | 返回集合中所有制的总体统计方差。 |
快速入门
SQL 中常见的聚集函数为 AVG、COUNT、MAX、MIN、SUM。以下为这五类聚集函数最基本的用法:
-- 计算集合中的平均值
SELECT AVG(COLUMN) FROM TABLE_NAME;
-- 统计集合的总数
SELECT COUNT(*) FROM TABLE_NAME;
-- 计算集合中的最大值
SELECT MAX(COLUMN) FROM TABLE_NAME;
-- 计算集合中的最小值
SELECT MIN(COLUMN) FROM TABLE_NAME;
-- 统计集合中所有值之和
SELECT SUM(COLUMN) FROM TABLE_NAME;