PostgreSql的聚合函数--string_agg
来源:互联网 发布:g935fd支持什么网络 编辑:程序博客网 时间:2024/06/01 10:58
聚合函数
顾名思义,聚合函数就是类似于min(),max(),sum()等函数,当然这些都是SQL标准的函数,应该都是比较熟悉,也比较常见。这边不对这些常见的函数进行介绍,主要涉及的是PostgreSql自带的一些特色聚合函数进行介绍,自己学习,也与大家共享。
主要介绍的聚合函数:
String_agg,xmlagg,array_agg三者的道理是一样的只是合并的值的数据类型不同而已,这边主要介绍String_agg,这个也是最常用的。
String_agg:有两个参数一个是需要合并的字段名称或者字面量,还有就是合并后以何种分隔符,即:string_agg(expression, delimiter)。
假如表emp中的数据分布是这样的:
"empno" "ename" "job" "mgr" "hiredate" "sal" "comm" "deptno"
"7499" "ALLEN" "SALESMAN" "7698" "1981/2/20" "1600" "300" "30"
"7566" "JONES" "MANAGER" "7839" "1981/4/2" "2975" "20"
"7654" "MARTIN" "SALESMAN" "7698" "1981/9/28" "1250" "1400" "30"
其中7499和7654是同一个deptno的,为30,另外一个7566的deptno为20。
1、 现在需要将同一个部门的员工的姓名合并起来
Select string_agg(ename,’,’) from empgroup by deptno;
在查询的字段上添加deptno
Select deptno,string_agg(ename,’,’) fromemp group by deptno;
结果为:
Deptno ename_agg
20 JONES
30 ALLEN,MARTIN
那么当你需要ename这个字段的不是按照现在的顺序合并该怎么办呢?
那我们就需要由一个排序的操作,如:
Select deptno,string_agg(ename,’,’ orderby ename desc) from emp group by deptno;
结果为:
Deptno ename_agg
20 JONES
30 MARTIN,ALLEN
需要注意的是:
1、 order by语句需要写在delimiter的后面这是PostgreSql的语句;
2、 order by后面的字段不受整个语句的group by语句后面的字段的限制,可以使ename,可以使sal等等,只是不同字段的排序ename的合并顺序会随之改变;
3、 delimiter的值可以改变不一定需要逗号也可以使“-”等
- PostgreSql的聚合函数--string_agg
- PostgreSql 聚合函数string_agg与array_agg
- SQL Server 2017 新的字符串聚合函数String_Agg
- PostgreSQL 聚合函数共享申请的内存空间
- PostgreSQL 聚合函数讲解
- string_agg
- postgresql中获取json数据和聚合函数的使用
- postgresql 聚合的暗坑
- PostgreSql聚合函数二---聚合函数,分析函数和窗口函数
- 聚合函数的应用
- 聚合函数的应用
- sql的聚合函数
- 表的聚合函数
- 聚合函数的使用
- 常用的聚合函数
- 聚合函数的分类
- sql的聚合函数
- Hive的聚合函数
- 灰度图像--图像分割 区域分割之分水岭算法
- linux下cat命令详解
- 基于C++的OpenCV常用函数
- 【转】新出现的android分发测试站点
- New Tech
- PostgreSql的聚合函数--string_agg
- iOS开发UI篇—IOS开发中Xcode的一些使用技巧
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- Reverse Bits
- Centos桌面条件下打开Terminal的快捷键是什么呢?
- 浅谈IOS的代码布局
- 计算结构体的大小
- 将图片缩放(质量和比例变化)
- 智能手机之双卡双待(续)