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 值 |









