oracle数据库中listagg函数使用详解

 更新时间:2024年06月28日 10:59:18   作者:谷晓光  
listagg函数是Oracle数据库中的一个聚合函数,用于将一组值连接成一个以指定分隔符分隔的字符串,这篇文章主要给大家介绍了关于oracle数据库中listagg函数使用的相关资料,需要的朋友可以参考下

listagg是oracle11.2增加的特性。

功能类似wmsys.wm_concat函数,即将数据分组后,把指定列的数据通过指定符号合并。

--listagg()函数,列转行。 在每个分组内,LISTAGG根据order by子句对列值进行排序,将排序后的结果拼接起来。

--基本语法;listagg(待处理列,连接符号) within group(order by 用于拼接组内排序字段)

select a.* from test_userinfo a;

--分组函数:

select a.user_sex,listagg(a.user_school,',') within group(order by a.user_age) from test_userinfo a group by a.user_sex;

--分析函数:根据年龄分区,在分区内部拼接学校,然后拼接时按照性别排序

select a.user_name,a.user_age,a.user_school,listagg(a.user_school,',') within group(order by a.user_sex) over (partition by a.user_age) from test_userinfo a;

附:LISTAGG () 和STRING_AGG () 函数的区别与简单使用

1:区别

LISTAGG 和 STRING_AGG 都是用于在 SQL 查询中将多个值合并为单个字符串的函数,但它们属于不同的数据库系统。

  • LISTAGG 是 Oracle 数据库中的聚合函数,用于将多行的值合并为一个字符串,并且可以指定分隔符。
  • STRING_AGG 是 SQL Server 中的聚合函数,也用于将多行的值合并为一个字符串,并且可以指定分隔符。

2:语法结构

2.1 LISTAGG 函数的语法结构如下:

LISTAGG(expression, delimiter) WITHIN GROUP 
(ORDER BY order_expression) [OVER (analytic_clause)]
  • expression:要合并的表达式,通常是一个列或计算值。
  • delimiter:用于分隔合并的值的分隔符。
  • ORDER BY order_expression:可选部分,用于指定合并的顺序。如果不提供 ORDER BY 子句,合并的顺序将不受控制。
  • analytic_clause:可选部分,通常用于窗口函数。在常规用法中,这部分通常不会出现。

2.2 STRING_AGG 函数的语法结构如下: 

STRING_AGG (expression, separator)
  • expression:要合并的表达式,通常是一个列或计算值。
  • separator:用于分隔合并的值的分隔符。

总结

到此这篇关于oracle数据库中listagg函数使用的文章就介绍到这了,更多相关oracle listagg函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 简单说明Oracle数据库中对死锁的查询及解决方法

    简单说明Oracle数据库中对死锁的查询及解决方法

    这篇文章主要介绍了Oracle数据库中对死锁的查询及解决方法,文中用两个表创造死锁的简单例子来说明对死锁的撤销方法,需要的朋友可以参考下
    2016-01-01
  • [Oracle] Data Guard CPU/PSU补丁安装详细教程

    [Oracle] Data Guard CPU/PSU补丁安装详细教程

    以下是对Data Guard CPU/PSU补丁安装的方法进行了详细的分析介绍,需要的朋友可以参考下
    2013-07-07
  • Flume监听oracle表增量的步骤详解

    Flume监听oracle表增量的步骤详解

    这篇文章主要介绍了Flume监听oracle表增量的步骤详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • Oracle内存分配不足的过程解析(业务干挂数据库)

    Oracle内存分配不足的过程解析(业务干挂数据库)

    本文介绍了Oracle数据库内存分配不足的问题,原因主要是业务剧增导致的内存不足,通过分析AAS负载、等待事件、transactions和阻塞情况,发现PGA内存出现了严重抖动,感兴趣的朋友一起看看吧
    2025-02-02
  • oracle查看执行最慢与查询次数最多的sql语句

    oracle查看执行最慢与查询次数最多的sql语句

    这篇文章主要给大家介绍了oracle查看执行最慢与查询次数最多的sql语句,文中给出完整的示例代码,相信对大家的学习或者工作具有一定的参考价值,有需要的朋友们下面来一起看看吧。
    2017-01-01
  • Oracle 多参数查询语句

    Oracle 多参数查询语句

    这篇文章主要介绍了Oracle 多参数查询语句 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • Oracle RMAN还原时set newname文件名有空格报错的解决方法

    Oracle RMAN还原时set newname文件名有空格报错的解决方法

    数据库备份还原是我们日常开发少不了的一个功能,但如果一不注意估计就会有问题,下面这篇文章主要给大家介绍了关于Oracle RMAN还原时set newname文件名有空格报错的解决方法,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • Oracle数据回滚的全过程

    Oracle数据回滚的全过程

    这篇文章主要给大家介绍了关于Oracle数据回滚的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Oracle 中生成流水号的方法

    Oracle 中生成流水号的方法

    这篇文章主要介绍了Oracle 中生成流水号的方法 的相关资料,需要的朋友可以参考下
    2016-06-06
  • 基于OGG实现Oracle实时同步MySQL的全过程

    基于OGG实现Oracle实时同步MySQL的全过程

    这篇文章详细阐述了基于OGG实现Oracle实时同步MySQL全过程,文中通过图文结合和代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-11-11

最新评论