跳转到内容

SQL 方言参考/函数和表达式/数学函数/聚合函数

来自维基教科书,开放的书籍,开放的世界

聚合函数

[编辑 | 编辑源代码]

聚合函数对一组值进行操作,返回单个标量值。标准规定,除 VAR_POP、VAR_SAMP、STDDEV_POP 和 STDDEV_SAMP 外,所有聚合函数都应该能够在参数前处理两个额外的量词之一:ALL(特性 ID E091-06)和 DISTINCT(特性 ID E091-07)。ALL 是默认值,可以省略,DISTINCT 表示仅将唯一值传递给聚合函数。为了使演示更加简洁,这两个量词不会针对每个函数单独讨论,但在函数支持它们两者时,会指定为 [DISTINCT|ALL]

此页面包含 比较表,它们可能 很大且复杂

虽然完全可以以完整状态查看它们,但建议安装一个 比较表扩展,它可以让你选择特定感兴趣的列进行比较。

SQL 版本 特性 标准
SQL:2011
DB2 Firebird Ingres Linter MSSQL MySQL
Vers. 5.x
MonetDB Oracle
Vers. 11.x
PostgreSQL SQLite Virtuoso
? 计算组中的所有行 COUNT(*) ... GROUP BY <分组标准> COUNT(*) COUNT(*) COUNT(*) ? COUNT(*) COUNT(*) COUNT(*) COUNT(*) COUNT(*) COUNT(*) ?
? 计算 x 中的非空值 COUNT(x) COUNT([DISTINCT] x) COUNT([DISTINCT] x) COUNT([DISTINCT] x) COUNT([DISTINCT] x) COUNT([DISTINCT] x) COUNT([DISTINCT] x) COUNT([DISTINCT] x) COUNT([DISTINCT] x) COUNT([DISTINCT] x) COUNT([DISTINCT] x) ?
? 使用 y 作为分隔符连接 x 中的非空值 N/A ? LIST([DISTINCT] x, y) ? ? N/A[1] GROUP_CONCAT([DISTINCT] x SEPARATOR y) listagg(x)
listagg(x, y)
sys.group_concat(x)
sys.group_concat(x, y)
自 R11.2 起:LISTAGG(x, y)[2] STRING_AGG(x, y) 自 9.0 起 [3] GROUP_CONCAT([DISTINCT] x [, y]) ?
? x 的总和 SUM(x) SUM([DISTINCT] x) SUM(x) SUM(x) SUM([DISTINCT] x) SUM([DISTINCT] x) SUM(x) SUM([DISTINCT] x) SUM(x) SUM([DISTINCT] x) SUM([DISTINCT] x)
TOTAL([DISTINCT] x)
?
? x 的平均值 AVG(x) AVG([DISTINCT] x) AVG(x) AVG(x) AVG([DISTINCT] x) AVG([DISTINCT] x) AVG([DISTINCT] x) AVG([DISTINCT] x) AVG(x) AVG([DISTINCT] x) AVG([DISTINCT] x) ?
? x 中的最小值 MIN(x) MIN(x) MIN(x) MIN(x) MIN(x) MIN(x) MIN(x) MIN(x) MIN(x) MIN(x) MIN(x) ?
? x 中的最大值 MAX(x) MAX(x) MAX(x) MAX(x) MAX(x) MAX(x) MAX(x) MAX(x) MAX(x) MAX(x) MAX(x) ?
? 标准差 STDDEV_POP(x)
STDDEV_SAMP(x)
STDDEV([DISTINCT] x) STDDEV_POP(x)
STDDEV_SAMP(x)
STDDEV_POP(x) STDDEV([DISTINCT] x) STDEV(x)
STDEVP(x)
STD(x)
STDDEV(x)
STDDEV_POP(x)
sys.stddev_pop(x)
sys.stddev_samp(x)
STDDEV([DISTINCT|ALL] x) STDDEV(x)
STDDEV_POP(x)
STDDEV_SAMP(x)
N/A STDDEV(x, y)
? 方差 VAR_POP(x)
VAR_SAMP(x)
VARIANCE([DISTINCT] x) VAR_POP(x)
VAR_SAMP(x)
? VARIANCE([DISTINCT] x) VAR(x)
VARP(x)
VARIANCE(x)
VAR_POP(x)
sys.var_pop(x)
sys.var_samp(x)
VARIANCE(x) VARIANCE(x)
VAR_POP(x)
VAR_SAMP(x)
N/A VAR(x)
? xy 的总体协方差 COVAR_POP(x, y) COVARIANCE(x, y)
COVAR(x, y)
COVAR_POP(x, y) ? ? N/A N/A sys.covar_pop(x, y) COVAR_POP(x, y) COVAR_POP(x, y) N/A ?
? xy 的样本协方差 COVAR_SAMP(x, y) N/A COVAR_SAMP(x, y) ? ? N/A N/A sys.covar_samp(x, y) COVAR_SAMP(x, y) COVAR_SAMP(x, y) N/A ?
  1. 可以使用用户定义的聚合函数或其他几种方法实现[1]
  2. 可以使用用户定义的聚合函数、未公开的 wmsys.wm_concat 函数以及其他几种方法实现[2]
  3. 可以使用 PostgreSQL 数组和用户定义的聚合函数为旧版本实现[3]
华夏公益教科书