码迷,mamicode.com
首页 > 数据库 > 详细

PostgreSql 聚合函数string_agg与array_agg

时间:2020-07-07 15:17:29      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:esc   expr   res   replace   协议   dep   nes   字符串   http   

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

标签:esc   expr   res   replace   协议   dep   nes   字符串   http   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!