ORACLE函数之LISTAGG
函数作用
在每个分组内,LISTAGG根据order by 对列值进行排序,将排序后的结果拼接起来
函数语法
即:LISTAGG( [ALL] measure_expr [,'delimiter' [,listagg_overflow_clause] ] ) [ WITH GROUP (order_by_clause) [ OVER query_partion_clause] ]
说明:[]内表示是可选的
参数解释:
- ALL:ALL关键字是可选的
- measure_expr:是被操作的列,可以是任何基于列的表达式,列中空值将被忽略
- delimiter:可选的,分隔符,拼接每个列值。默认值为NULL
- listagg_overflow_clause:可选的,这个子句控制当返回值超过返回数据类型的最大长度时函数的行为。
- order_by_clause:排序子句,决定被连接值的顺序
- query_partion_clause:略,可搜索oracle分析函数【over(partition by...)】来了解
函数使用示例
1、sql脚本
create table salaryTable ( id int primary key, name varchar(32) DEFAULT ' ', salary varchar(32) DEFAULT ' ', entryTime TIMESTAMP(6) DEFAULT SYSTIMESTAMP ); insert into salaryTable(id,name,salary,entryTime) values(1,'张三','5000',to_date('20181212','yyyymmdd')); insert into salaryTable(id,name,salary,entryTime) values(2,'李四','6000',to_date('20191119','yyyymmdd')); insert into salaryTable(id,name,salary,entryTime) values(3,'王五','5000',to_date('20160212','yyyymmdd')); insert into salaryTable(id,name,salary,entryTime) values(4,'harara','8000',to_date('20110301','yyyymmdd'));
2、使用LISTAGG函数进行查询
2.1根据工资分组,将工资相同的员工查询出来,用逗号拼接
SELECT LISTAGG(NAME,','),salary FROM salaryTable GROUP BY salary;
2.2根据工资分组,将工资相同的员工查询出来,并且根据入职时间排序,用逗号拼接
作者:小念
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人