Oracle 中 LISTAGG 函数的介绍以及使用

article/2025/10/4 10:52:35

LISTAGG 函数介绍

listagg 函数是 Oracle 11.2 推出的新特性。
其主要功能类似于 wmsys.wm_concat 函数, 即将数据分组后, 把指定列的数据再通过指定符号合并。

LISTAGG 使用

listagg 函数有两个参数:1、 要合并的列名2、 自定义连接符号☆LISTAGG 函数既是分析函数,也是聚合函数
所以,它有两种用法:1、分析函数,如: row_number()rank()dense_rank() 等,用法相似listagg(合并字段, 连接符) within group(order by 合并的字段的排序) over(partition by 分组字段)2、聚合函数,如:sum()count()avg()等,用法相似listagg(合并字段, 连接符) within group(order by 合并字段排序)		--后面跟 group by 语句

(补充)分析函数和聚合函数

一部分聚合函数其实也可以写成分析函数的形式。分析函数和聚合函数本质上都是对数据进行分组,二者最大的不同便是:对数据进行分组分组之后,聚合函数只会每组返回一条数据,而分析函数会针对每条记录都返回,一部分分析函数还会对同一组中的数据进行一些处理(比如:rank() 函数对每组中的数据进行编号);还有一部分分析函数不会对同一组中的数据进行处理(比如:sum()listagg()),这种情况下,分析函数返回的数据会有重复的,distinct 处理之后的结果与对应的聚合函数返回的结果一致。

LISTAGG 实例
先构造几笔临时数据

with test as(
SELECT 'SNO-0010210' S_NO,'1002' ITEM_NO,'BruceLiu' CUS_NAME,'15632148754' TEL,'深圳' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010210' S_NO,'1003' ITEM_NO, 'CandySun' CUS_NAME,'19745233214' TEL, '南京' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010211' S_NO, '1003' ITEM_NO,'QianSan' CUS_NAME,'19745233214' TEL,'南京' ADDRESS FROM DUAL
UNION 
SELECT 'SNO-0010212' S_NO,'1005' ITEM_NO,'HuiClear' CUS_NAME,'19745233214' TEL,'白银' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010212' S_NO,'1007' ITEM_NO,'CatBool' CUS_NAME,'19745233214' TEL,'重庆' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010212' S_NO,'1004' ITEM_NO,'Liability' CUS_NAME,'18812436214' TEL,'成都' ADDRESS FROM DUAL
)

在这里插入图片描述

LISTAGG 分析函数用法

SELECT T.S_NO,LISTAGG(T.ITEM_NO, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) ITEM_NO,LISTAGG(T.CUS_NAME, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) CUS_NAME,LISTAGG(T.TEL, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) TEL,LISTAGG(T.ADDRESS, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) ADDRESSFROM test TGROUP BY T.S_NO;

在这里插入图片描述

LISTAGG 聚合函数用法

SELECT T.S_NO,LISTAGG(T.ITEM_NO, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) ITEM_NO,LISTAGG(T.CUS_NAME, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) CUS_NAME,LISTAGG(T.TEL, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) TEL,LISTAGG(T.ADDRESS, '/') WITHIN GROUP(ORDER BY T.S_NO, T.ITEM_NO) OVER(PARTITION BY T.S_NO) ADDRESSFROM test T;

在这里插入图片描述

好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,我是老贺,我们下期见~~
在这里插入图片描述


http://chatgpt.dhexx.cn/article/QZdP1Q6d.shtml

相关文章

矩阵乘以其矩阵转置求导-数学

20210703 矩阵论 https://zhuanlan.zhihu.com/p/288541909?utm_sourcewechat_session 矩阵运算法则 20210529 https://blog.csdn.net/Lisa_Ren_123/article/details/81983785 矩阵转置求导 https://jingyan.baidu.com/article/da1091fb69f0b7027849d612.html

matlab中怎么求矩阵的转置

第一步我们首先需要知道matlab中矩阵后面加单引号是共轭转置,加点和单引号是转置,如下图所示: matlab中怎么求矩阵的转置 第二步在matlab命令行窗口中输入“ A[1 2 4;5 6 7]”,如下图所示: matlab中怎么求矩阵的转…

矩阵的转置等于矩阵的逆

http://zhidao.baidu.com/question/334500638.html 百度知道三个回答 矩阵A的转置矩阵A^T等于A的逆矩阵A^-1 那么AA^TAA^-1E 设A(α1,α2,α3,...,αn)^T,其中αi为n维列向量, 那么A^T(α1,α2&…

矩阵转置运算简单总结

矩阵转置的运算规律: (1); (2); (3); (4); (5)

矩阵的转置

稀疏矩阵: 当一个矩阵中的很多元素都是零,而且非零元素的分布没有规律时,该矩阵称为稀疏矩阵。 稀疏矩阵的压缩存储方法: 从稀疏矩阵的概念,我们可以知道,稀疏矩阵的大多元素都是零。所以,我们只…

转置矩阵,逆矩阵和倒转置矩阵

单位矩阵: 转置矩阵(transpose matrix) 在线性代数中,矩阵A的转置是另一个矩阵AT(也写做Atr, tA或A′)由下列等价动作建立: 把A的横行写为AT的纵列把A的纵列写为AT的横行 形式上说,m n矩阵A的转置是n m矩阵 for 。…

矩阵的乘法和转置

矩阵的乘法 矩阵的转置 A的转置为 ​​​​​​​ 反对称矩阵主对角线上全为0;

矩阵与转置

1.转置矩阵 1.1转置矩阵简介 把矩阵A的行换成同序数的列得到的新矩阵,叫做A的转置矩阵(Transpose of a Matrix),记作ATAT。 例如: 因此,转置矩阵的特点: (1)转置矩阵的行数是原矩阵的列数&…

矩阵转置

矩阵转置 1. n*n 对角线置换 #include <stdio.h> //编写函数&#xff1a;实现4*4矩阵的转置。 //要求&#xff1a;在main函数中定义二维数组、输入数据、输出原矩阵、调用函数、输出转置后的矩阵。 int ZhuanZhi(int arr[][4]){int temp;for(int i0;i<4;i){ for(int …

矩阵乘以它的转置

矩阵乘以它的转置 AA^T| |A| |A^T| |A||A| |A|^2即矩阵A乘以A的转置等于A的行列式的平方。 明显不等于啦&#xff0c;1*2的矩阵转置矩阵为2*1&#xff0c;那么1*2的矩阵乘以2*1的转置矩阵得到一个1*1的矩阵&#xff0c;而2*1的转置矩阵乘以1*2的矩阵得到一个2*2的矩阵 这个…

矩阵转置与矩阵相乘

1.转置矩阵 1.1转置矩阵简介 把矩阵A的行换成同序数的列得到的新矩阵&#xff0c;叫做A的转置矩阵(Transpose of a Matrix)&#xff0c;记作ATAT。 例如&#xff1a; 因此&#xff0c;转置矩阵的特点&#xff1a; &#xff08;1&#xff09;转置矩阵的行数是原矩阵的列数&…

gyp linux,使用gyp

GYP(Generate You Project)&#xff0c;生成IDE项目的工具&#xff0c;使用Python脚本写成&#xff0c;配置文件为JSON格式。 使用gyp需要两个环境&#xff0c;python和gyp。gyp可以直接在这里下载 git clone https://chromium.googlesource.com/external/gyp 一般下载到build/…

gyp ERR!报错解决

项目安装依赖包的时候&#xff0c;多次出现gyp ERR&#xff01;或者node-pre-gyp ERR!这种错&#xff0c;记录一下最近遇到的报错&#xff1a; 用过两次这种解决办法&#xff0c;都能把依赖下好&#xff0c;项目跑起来 npm instal --unsafe-perm 或者 yarn --unsafe-perm 运…

解决gyp err 错误

npm install 安装失败 有一堆报错&#xff0c;大概意思就是node-gyp没有安装成功&#xff0c;以及需要一些python的环境 解决步骤 1、安装python环境 2、以管理员身份执行 npm install --g --production windows-build-tools 3、之后在安装完成后会在C:WindowsSystem32里找到一…

gyp ERR! find Python 解决方案

命令行报错 npm install npm WARN deprecated fsevents2.1.3: "Please update to latest v2.3 or v2.2" npm WARN deprecated fsevents1.2.13: fsevents 1 will break on node v14 and could be using insecure binaries. Upgrade to fsevents 2.> heapdump0.3.…

node-gyp 报错

error C:\xxx\node_modules\fibers: Command failed. 设置后还是会报错需要下载Visual Studio 访问地址GitHub - nodejs/node-gyp: Node.js native addon build tool 安装完之后设置使用路径就好了 npm config set msvs_version "C:\Program Files (x86)\Microsoft Visual…

【解决】gyp ERR! node -v v12.7.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok

使用npm install报错如下 原因 这是 node-sass、sass-loader 安装的版本和电脑安装的 node.js 版本不兼容导致的错误 解决办法 我的node.js版本是&#xff1a;v12.7.0 在项目目的package.json文件把 node-sass 和 sass-loader 的修改成如下版本&#xff0c;npm i…

npm ERR! gyp verb等一系列错

npm ERR! code 1 npm ERR! path F:\新桌面\大三下\生产实习\mock-devices-master\mock-devices-master\node_modules\node-sass npm ERR! command failed npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node scripts/build.js npm ERR! Building: E:\Environment\Nod…