PG中的聚集函数
聚集函数从一个输入值的集合计算出一个单一值。
函数 | 参数类型 | 返回类型 | 描述 |
---|---|---|---|
array_agg(* expression*) |
任何非数组类型 | 参数类型的数组 | 输入值(包括空)被连接到一个数组 |
array_agg(* expression*) |
任意数组类型 | 和参数数据类型相同 | 输入数组被串接到一个更高维度的数组中 (输入必须都具有相同的维度并且不能为空或者 NULL) |
avg(* expression*) |
smallint , int , bigint 、real 、double precision 、numeric 或interval |
对于任何整数类型参数是numeric ,对于一个浮点参数是double precision ,否则和参数数据类型相同 |
所有非空输入值的平均值(算术平均) |
bit_and(* expression*) |
smallint 、int 、bigint 或bit |
与参数数据类型相同 | 所有非空输入值的按位与,如果没有非空值则结果是空值 |
bit_or(* expression*) |
smallint , int , bigint , or bit |
与参数数据类型相同 | 所有非空输入值的按位或,如果没有非空值则结果是空值 |
bool_and(* expression*) |
bool |
bool |
如果所有输入值为真则结果为真,否则为假 |
bool_or(* expression*) |
bool |
bool |
至少一个输入值为真时结果为真,否则为假 |
count(*) |
bigint |
输入的行数 | |
count(* expression*) |
any | bigint |
expression 值非空的输入行的数目 |
every(* expression*) |
bool |
bool |
等价于bool_and |
json_agg(* expression*) |
any |
json |
将值,包含空值,聚集成一个 JSON 数组 |
jsonb_agg(* expression*) |
any |
jsonb |
把值,包含空值,聚合成一个 JSON 数组 |
json_object_agg(* name*, * value*) |
(any, any) |
json |
将名字/值对聚集成一个 JSON 对象,值可以为空,但不能是名字。 |
jsonb_object_agg(* name*, * value*) |
(any, any) |
jsonb |
把名字/值对聚合成一个 JSON 对象,值可以为空,但不能是名字。 |
max(* expression*) |
任意数组、数字、串、日期/时间、网络或者枚举类型,或者这些类型的数组 | 与参数数据类型相同 | 所有非空输入值中expression 的最大值 |
min(* expression*) |
任意数组、数字、串、日期/时间、网络或者枚举类型,或者这些类型的数组 | 与参数数据类型相同 | 所有非空输入值中expression 的最小值 |
string_agg(* expression*, * delimiter*) |
(text , text ) 或 (bytea , bytea ) |
与参数数据类型相同 | 非空输入值连接成一个串,用定界符分隔 |
sum(* expression*) |
smallint 、int 、 bigint 、real 、double precision 、numeric 、 interval 或money |
对smallint 或int 参数是bigint ,对bigint 参数是numeric ,否则和参数数据类型相同 |
所有非空输入值的expression 的和 |
xmlagg(* expression*) |
xml |
xml |
连接 非空XML 值 |