数据仓库服务 GAUSSDB(DWS)-聚集函数:array_agg(expression)

时间:2023-12-29 17:11:48

array_agg(expression)

描述:将所有输入值(包括空)连接成一个数组。函数入参不支持数组形式。

返回类型:参数类型的数组。

示例:

创建表employeeinfo,并插入数据:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
CREATE TABLE employeeinfo (empno smallint, ename varchar(20), job varchar(20), hiredate date,deptno smallint);
INSERT INTO employeeinfo VALUES (7155, 'JACK', 'SALESMAN', '2018-12-01', 30);
INSERT INTO employeeinfo VALUES (7003, 'TOM', 'FINANCE', '2016-06-15', 20);
INSERT INTO employeeinfo VALUES (7357, 'MAX', 'SALESMAN', '2020-10-01', 30);

SELECT * FROM employeeinfo;
 empno | ename |   job    |      hiredate       | deptno
-------+-------+----------+---------------------+--------
  7155 | JACK  | SALESMAN | 2018-12-01 00:00:00 |     30
  7357 | MAX   | SALESMAN | 2020-10-01 00:00:00 |     30
  7003 | TOM   | FINANCE  | 2016-06-15 00:00:00 |     20
(3 rows)

查询部门编号为30的所有员工姓名:

1
2
3
4
5
SELECT array_agg(ename) FROM employeeinfo where deptno = 30;
 array_agg
------------
 {JACK,MAX}
(1 row)

查询属于同一个部门的所有员工:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
SELECT deptno, array_agg(ename) FROM employeeinfo group by deptno;
 deptno | array_agg
--------+------------
     30 | {JACK,MAX}
     20 | {TOM}
(2 rows)

SELECT distinct array_agg(ename) OVER (PARTITION BY deptno) FROM employeeinfo;
 array_agg
------------
 {TOM}
 {JACK,MAX}
(2 rows)

查询所有的部门编号且去重:

1
2
3
4
5
6
SELECT array_agg(distinct deptno) FROM employeeinfo group by deptno;
 array_agg
-----------
 {20}
 {30}
(2 rows)

查询所有的部门编号去重后按降序排列:

1
2
3
4
5
SELECT array_agg(distinct deptno order by deptno desc) FROM employeeinfo;
 array_agg
-----------
 {30,20}
(1 row)
support.huaweicloud.com/sqlreference-dws/dws_06_0046.html