PostgreSql 聚合函數string_agg與array_agg


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM