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

时间:2025-02-12 15:04:44

array_agg(expression)

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

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

示例:

创建表employeeinfo,并插入数据:

 1 2 3 4 5 6 7 8 9101112
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的所有员工姓名:

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

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

 1 2 3 4 5 6 7 8 910111213
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)

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

123456
SELECT array_agg(distinct deptno) FROM employeeinfo group by deptno; array_agg----------- {20} {30}(2 rows)

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

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