6.14. 聚集函数

聚集函数 从一套输入值里计算一个结果. Table 6-33 显示了内建聚集函数。 聚集函数的特殊语法在 Section 1.2.5里解释.请参考 PostgreSQL 7.3 教程 获取附加的介绍性信息.

Table 6-33. 聚集函数

函数参数类型返回类型描述
avg(expression) 所有输入值的均值(算术平均) smallint, integer, bigint, real, double precision, numeric, 或 interval. 对于任何整数类型输入,结果都是 numeric 类型. 对于任何浮点输入,结果都是 double precision 类型. 否则和输入数据类型相同. 所有输入值的平均(算术平均)。
count(*) bigint输入值的数量
count(expression)任意bigint 计算那些 expression 非 NULL 的输入的个数.
maxX(expression)任何数值,字串或者日期/时间类型与参数同类型所有输入值中, expression 的最大值
min(expression)任何数值,字串或者日期/时间类型与参数同类型所有输入值中, expression 的最小值
stddev(expression) smallint, integer, bigint, real, double precision, 或 numeric. 浮点数参数时是double precision, 否则 numeric输入值的标准采样偏差(sample standard deviation)
sum(expression) smallint, integer, bigint, real, double precision, numeric, 或者 interval smallintinteger输入 输出类型为 bigint.对于bigint输入输出类型为 numeric, 浮点数输入的结果是 double precision. 否则和输入数据类型相同. 所有输入值的 expression 的总和
variance(expression) smallint, integer, bigint, real, double precision, 或者 numeric. 浮点数参数是 double precision, 否则是 numeric输出值的采样方差(标准采样偏差的平方).

请注意除了 count 以外, 这些函数在没有选中行时返回 NULL. 尤其要指出的是对零输入行进行 sum 将返回 NULL, 而不是我们预期的零. 必要时可以用 coalesce 把 NULL 替换成零.