↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 8.1 已结束支持。 请参阅 当前版本手册.

9.15. 聚合函数 #

聚合函数从一组输入值计算单个结果。表 9.37展示了内置的聚合函数。聚合函数的特殊语法注意事项在第 4.2.7 节中说明。更多入门信息请参见第 2.7 节。

表 9.37. 聚合函数

FunctionArgument Type(s)Return Type描述
avg(expression) smallint, int, bigint, real, double precision, numeric, or interval 整数类型参数为numeric,浮点参数为double precision,否则与参数数据类型相同 所有输入值的平均值(算术平均)
bit_and(expression) smallint、int、bigint 或 bit与参数数据类型相同所有非空输入值的按位与;没有非空输入时为 null
bit_or(expression) smallint、int、bigint 或 bit与参数数据类型相同所有非空输入值的按位或;没有非空输入时为 null
bool_and(expression) bool bool 所有输入值都为真时返回真,否则返回假
bool_or(expression) bool bool 至少一个输入值为真时返回真,否则返回假
count(*)任意bigintnumber of input rows
count(expression)任意bigintexpression 的值不为 null 的输入行数
every(expression) bool bool 等价于 bool_and
max(expression)any array, numeric, string, or date/time typesame as argument type 所有输入值中expression的最大值
min(expression)any array, numeric, string, or date/time typesame as argument type 所有输入值中expression的最小值
stddev(expression) smallint, int, bigint, real, double precision, or numeric double precision(浮点参数),否则numeric 输入值的样本标准差
sum(expression) smallint, int, bigint, real, double precision, numeric, interval, or money smallint或int参数为bigint,bigint参数为numeric,否则与参数数据类型相同 所有输入值中expression的总和
variance(expression) smallint, int, bigint, real, double precision, or numeric double precision(浮点参数),否则numeric 输入值的样本方差(样本标准差的平方)

需要注意,除了count之外,这些函数在没有选中任何行时都会返回空值。特别地,sum在没有输入行时返回空值,而不是预期中的零。必要时,可以用coalesce函数把空值替换成零。

注意

布尔聚合bool_and和bool_or对应于标准 SQL 聚合every和any或some。至于any和some,标准语法似乎存在歧义:

SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;

此处的ANY既可以被视为引入一个子查询,也可以在该子查询返回一行布尔值时被视为聚合函数。因此,不能将标准名称用于这些聚合。

注意

习惯于其他 SQL 数据库管理系统的用户,可能会对count聚合用于整个表时的性能感到失望。如下查询:

SELECT count(*) FROM sometable;

将被PostgreSQL以顺序扫描整个表的方式执行。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.