PostgreSql 聚合函数string_agg与array_agg
Posted MountainTai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSql 聚合函数string_agg与array_agg相关的知识,希望对你有一定的参考价值。
string_agg(expression, delimiter) 非空输入值连接成字符串,由分隔符分隔
array_agg(expression) 输入值(包括空值)连接到一个数组中 ;输入数组连接成一个更高维度的数组(输入必须具有相同的维度,不能为空或空);
1.查询同一个部门下的员工且合并起来
方法1:
select deptno, string_agg(ename, ‘,‘) from jinbo.employee group by deptno;
deptno | string_agg
--------+--------------
20 | JONES
30 | ALLEN,MARTIN
方法2:
select deptno, array_to_string(array_agg(ename),‘,‘) from jinbo.employee group by deptno;
deptno | array_to_string
--------+-----------------
20 | JONES
30 | ALLEN,MARTIN
2、在1条件的基础上,按ename 倒叙合并
select deptno, string_agg(ename, ‘,‘ order by ename desc) from jinbo.employee group by deptno;
deptno | string_agg
--------+--------------
20 | JONES
30 | MARTIN,ALLEN
3、按数组格式输出使用 array_agg
select deptno, array_agg(ename) from jinbo.employee group by deptno;
deptno | array_agg
--------+----------------
20 | {JONES}
30 | {ALLEN,MARTIN}
4、array_agg 去重元素,例如查询所有的部门
select array_agg(distinct deptno) from jinbo.employee;
array_agg
-----------
{20,30}
(1 row)
#不仅可以去重,还可以排序
select array_agg(distinct deptno order by deptno desc) from jinbo.employee;
array_agg
-----------
{30,20}
(1 row)
————————————————
版权声明:本文为CSDN博主「majinbo111」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011944141/article/details/78902678
以上是关于PostgreSql 聚合函数string_agg与array_agg的主要内容,如果未能解决你的问题,请参考以下文章
文本聚合函数(wm_concat, listagg, group_concat, string_agg)