PostgreSql的聚合函数--string_agg

PostgreSql的聚合函数--string_agg,第1张

概述聚合函数 顾名思义,聚合函数就是类似于min(),max(),sum()等函数,当然这些都是SQL标准的函数,应该都是比较熟悉,也比较常见。这边不对这些常见的函数进行介绍,主要涉及的是PostgreSql自带的一些特色聚合函数进行介绍,自己学习,也与大家共享。 主要介绍的聚合函数: String_agg,xmlagg,array_agg三者的道理是一样的只是合并的值的数据类型不同而已,这边主要介绍 聚合函数

顾名思义,聚合函数就是类似于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;

结果为:

Deptnoename_agg

20JOnes

30ALLEN,MARTIN

那么当你需要ename这个字段的不是按照现在的顺序合并该怎么办呢?

那我们就需要由一个排序的 *** 作,如:

Select deptno,’ orderby ename desc) from emp group by deptno;

结果为:

Deptnoename_agg

20JOnes

30MARTIN,ALLEN

需要注意的是:

1、 order by语句需要写在delimiter的后面这是Postgresql的语句;

2、 order by后面的字段不受整个语句的group by语句后面的字段的限制,可以使ename,可以使sal等等,只是不同字段的排序ename的合并顺序会随之改变;

3、 delimiter的值可以改变不一定需要逗号也可以使“-”等

总结

以上是内存溢出为你收集整理的PostgreSql的聚合函数--string_agg全部内容,希望文章能够帮你解决PostgreSql的聚合函数--string_agg所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1176122.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-02
下一篇2022-06-02

发表评论

登录后才能评论

评论列表(0条)

    保存