跳轉到內容

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]
華夏公益教科書