PostgreSql实现mysql的group_concat的聚合操作
2018-04-09 18:05
375 查看
group_concat是mysql中的一个聚集函数 ,但是PostgreSql没有这个函数 ,但是可以用string_agg函数来实现
出处: https://blog.csdn.net/u011944141/article/details/78902678
2
2
案例:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1.查询同一个部门下的员工且合并起来
2
3
4
5
6
7
8
9
10
11
12
13
14
2、在1条件的基础上,按ename 倒叙合并
2
3
4
5
6
3、按数组格式输出使用 array_agg
2
3
4
5
6
4、array_agg 去重元素,例如查询所有的部门
出处: https://blog.csdn.net/u011944141/article/details/78902678
array_agg(expression) 把表达式变成一个数组 一般配合 array_to_string() 函数使用1
2
string_agg(expression, delimiter) 直接把一个表达式变成字符串1
2
案例:
create table(empno smallint, ename varchar(20), job varchar(20), mgr smallint, hiredate date, sal bigint, comm bigint, deptno smallint); insert into jinbo.employee(empno,ename,job, mgr, hiredate, sal, comm, deptno) values (7499, 'ALLEN', 'SALEMAN', 7698, '2014-11-12', 16000, 300, 30); insert into jinbo.employee(empno,ename,job, mgr, hiredate, sal, comm, deptno) values (7499, 'ALLEN', 'SALEMAN', 7698, '2014-11-12', 16000, 300, 30); insert into jinbo.employee(empno,ename,job, mgr, hiredate, sal, comm, deptno) values (7654, 'MARTIN', 'SALEMAN', 7698, '2016-09-12', 12000, 1400, 30); select * from jinbo.employee; empno | ename | job | mgr | hiredate | sal | comm | deptno -------+--------+---------+------+------------+-------+------+-------- 7499 | ALLEN | SALEMAN | 7698 | 2014-11-12 | 16000 | 300 | 30 7566 | JONES | MANAGER | 7839 | 2015-12-12 | 32000 | 0 | 20 7654 | MARTIN | SALEMAN | 7698 | 2016-09-12 | 12000 | 1400 | 30 (3 rows)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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,MARTIN1
2
3
4
5
6
7
8
9
10
11
12
13
14
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,ALLEN1
2
3
4
5
6
3、按数组格式输出使用 array_agg
select deptno, array_agg(ename) from jinbo.employee group by deptno; deptno | array_agg --------+---------------- 20 | {JONES} 30 | {ALLEN,MARTIN}1
2
3
4
5
6
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)
相关文章推荐
- PostgreSQL如何实现MySQL中的group_concat聚集函数(简单的拼接功能)
- Mysql group_concat的反向应用实现(Mysql列转行)
- mysql的 函数 group_concat , substring_index 的使用以及 分库分表操作
- 【原创】利用MySQL 的GROUP_CONCAT函数实现聚合乘法
- mysql group_concat聚合分组
- 利用MySQL 的GROUP_CONCAT函数实现聚合乘法
- MySQL中GROUP_CONCAT函数长度限制处理/实现行转列的功能
- MySQL 使用GROUP_CONCAT实现统计报表
- MySQL中的CONCAT、CONCAT_WS、GROUP_CONCAT函数,实现多行和多列的内容放在一个单元格内
- Mysql group_concat的反向应用实现(Mysql列转行)
- postgresql如何实现group_concat功能
- sql server 怎么实现mysql中group_concat,列转行,列用分隔符拼接字符串
- Mongodb聚合函数count、distinct、group如何实现数据聚合操作
- postgreSQL中的array_to_string函数和如何实现group_concat
- PostgreSQL9.2的聚焦函数模拟实现group_concat
- sql server 怎么实现mysql中group_concat,列转行,列用分隔符拼接字符串
- Mongodb聚合函数count、distinct、group如何实现数据聚合操作
- postgresql如何实现group_concat功能
- SQL 实现 Mysql Group_Concat()效果
- Sybase数据库实现等效的mysql中group_concat功能