首页 > 数据库技术 > 详细

PostgreSql 聚合函数string_agg与array_agg

时间:2020-07-07 15:47:16      阅读:119      评论:0      收藏:0      [点我收藏+]

string_agg(expressiondelimiter)    非空输入值连接成字符串,由分隔符分隔

 

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

原文:https://www.cnblogs.com/mountain-tai/p/13260744.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!