参数类型 |
返回类型 |
描述 |
示例 |
结果 |
array_agg(expression) |
任意非数组类型 |
参数类型的数组 |
将入参包括NULL连接成一个数组 |
select array_agg(id) from tbl_test; |
{1,2,3} |
array_agg(expression) |
任意数组类型 |
入参数据类型 |
将入参数组连接成更高维度的数组,输入的数组必须是相同的维度,且不允许是空或NULL
|
select array_agg(array[‘b‘,‘c‘,‘a‘]); |
{{b,c,a}} |
avg(expression) |
smallint, int, bigint, real, double precision, numeric, or interval |
整形返回numeric,浮点型返回double precision,其他和入参类型相同 |
平均值 |
select avg(id) from tbl_test; |
2.0000000000000000 |
bit_and(expression) |
smallint, int, bigint, or bit |
和入参类型相同 |
所有非NULL输入值的按位与,如果全为NULL则返回NULL |
select bit_and(id) from tbl_test; |
0 |
bit_or(expression) |
smallint, int, bigint, or bit |
和入参类型相同 |
所有非NULL输入值的按位或,如果全为NULL则返回NULL |
select bit_or(id) from tbl_test; |
3 |
bool_and(expression) |
bool |
bool |
如果输入全是true则返回true,否则为false |
select bool_or(id::bool) from tbl_test; |
t |
bool_or(expression) |
bool |
bool |
如果输入至少一个true,则返回true,否则返回false |
select bool_or((id-1)::bool) from tbl_test; |
t |
count(*) |
|
bigint |
输入行数 |
select count(*) from tbl_test; |
3 |
count(expression) |
any |
bigint |
输入行中非NULL的行数 |
select count(id) from tbl_test; |
3 |
every(expression) |
bool |
bool |
功能同bool_and |
|
|
json_agg(expression) |
any |
json |
将输入聚合成一个json数组 |
select json_agg(id) from tbl_test; |
[1, 2, 3] |
jsonb_agg(expression) |
any |
jsonb |
将输入聚合成一个json数组 |
select jsonb_agg(id) from tbl_test; |
[1, 2, 3] |
json_object_agg(name,value) |
(any, any) |
json |
将输入组成一个key/value对的json对象 |
select json_object_agg(‘a‘,‘one‘); |
{ "a" : "one" } |
jsonb_object_agg(name,value) |
(any, any) |
jsonb |
将输入组成一个key/value对的json对象 |
select jsonb_object_agg(‘a‘,‘one‘); |
{"a": "one"} |
max(expression) |
|
|
输入最大值 |
select max(id) from tbl_test;
|
3 |
min(expression) |
|
|
输入最小值 |
select min(id) from tbl_test; |
1 |
string_agg(expression,delimiter) |
(text, text) or (bytea, bytea) |
同参数类型 |
将输入使用delimiter连接成一个text |
select string_agg(name,‘,‘) from tbl_test; |
张三,李四,王五 |
sum(expression) |
smallint, int, bigint, real, double precision, numeric, interval, or money |
|
输入和 |
select sum(id) from tbl_test; |
6 |
xmlagg(expression) |
xml |
xml |
|
请参考xml类型及其函数 |
|
**通用聚合函数**
函数 | 参数类型 | 返回类型 | 描述 | 示例 | 结果
-- | -- | -- | -- | -- | --
array_agg(expression) | 任意非数组类型 | 参数类型的数组 | 将入参包括NULL连接成一个数组 | select array_agg(id) from tbl_test; | {1,2,3}
array_agg(expression) | 任意数组类型 | 入参数据类型 | 将入参数组连接成更高维度的数组,输入的数组必须是相同的维度,且不允许是空或NULL | select array_agg(array[‘b‘,‘c‘,‘a‘]); | {{b,c,a}}
avg(expression) | smallint, int, bigint, real, double precision, numeric, or interval | 整形返回numeric,浮点型返回double precision,其他和入参类型相同 | 平均值 | select avg(id) from tbl_test; | 2.0000000000000000
bit_and(expression) | smallint, int, bigint, or bit | 和入参类型相同 | 所有非NULL输入值的按位与,如果全为NULL则返回NULL | select bit_and(id) from tbl_test; | 0
bit_or(expression) | smallint, int, bigint, or bit | 和入参类型相同 | 所有非NULL输入值的按位或,如果全为NULL则返回NULL | select bit_or(id) from tbl_test; | 3
bool_and(expression) | bool | bool | 如果输入全是true则返回true,否则为false | select bool_or(id::bool) from tbl_test; | t
bool_or(expression) | bool | bool | 如果输入至少一个true,则返回true,否则返回false | select bool_or((id-1)::bool) from tbl_test; | t
count(*) | | bigint | 输入行数 | select count(*) from tbl_test; | 3
count(expression) | any | bigint | 输入行中非NULL的行数 | select count(id) from tbl_test; | 3
every(expression) | bool | bool | 功能同bool_and | |
json_agg(expression) | any | json | 将输入聚合成一个json数组 | select json_agg(id) from tbl_test; | [1, 2, 3]
jsonb_agg(expression) | any | jsonb | 将输入聚合成一个json数组 | select jsonb_agg(id) from tbl_test; | [1, 2, 3]
json_object_agg(name,value) | (any, any) | json | 将输入组成一个key/value对的json对象 | select json_object_agg(‘a‘,‘one‘); | { "a" : "one" }
jsonb_object_agg(name,value) | (any, any) | jsonb | 将输入组成一个key/value对的json对象 | select jsonb_object_agg(‘a‘,‘one‘); |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
https://www.cnblogs.com/alianbog/p/5674838.html
PostgreSQL 分组、聚合函数
标签:select 参数类型 value postgre family left join www sum mit