简单易懂的listagg小教程
大家好,又见面了,我是你们的朋友全栈君。
listagg的作用是将分组范围内的所有行特定列的记录加以合并成行。函数签名中的measure_expr为分组中每个列的表达式,而delimiter为合并分割符。如果delimiter不设置的话,就表示无分割符。
中间within group后面的order_by_clause表示的是进行合并中要遵守的排序顺序。而后面的over子句表明listagg是具有分析函数analyze funcation特性的。具体采用listagg有三个场景。
1、对于无分组
SQL> select * from emp where deptno=30;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
—– ———- ——— —– ———– ——— ——— ——
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
7900 JAMES CLERK 7698 1981-12-3 950.00 30
6 rows selected
–按照empno进行排序
SQL> select listagg(ename,’ , ‘) within group (order byempno) from emp where deptno=30;
LISTAGG(ENAME,’,’)WITHINGROUP(
————————————————————
ALLEN , WARD , MARTIN , BLAKE , TURNER , JAMES
2、 在有分组条件下的listagg使用
SQL> select deptno, listagg(ename,’ ,’) within group (order by empno) from emp group by deptno;
DEPTNO LISTAGG(ENAME,’,’)WITHINGROUP(
—— ————————————-
10 CLARK ,KING ,MILLER
20 SMITH ,JONES ,SCOTT ,ADAMS ,FORD
30 ALLEN ,WARD ,MARTIN ,BLAKE ,TURNER ,JAMES
3、 使用over分组情况
SQL> select deptno, ename, listagg(ename, ‘ , ‘) within group (order by empno) over (partition by deptno) as emp_list from emp
2 where hiredate<=add_months(sysdate,-10*12);
DEPTNO ENAME EMP_LIST
—— ——
10 CLARK CLARK , KING , MILLER
10 KING CLARK , KING , MILLER
10 MILLER CLARK , KING , MILLER
20 SMITH SMITH , JONES , SCOTT , ADAMS , FORD
20 JONES SMITH , JONES , SCOTT , ADAMS , FORD
20 SCOTT SMITH , JONES , SCOTT , ADAMS , FORD
20 ADAMS SMITH , JONES , SCOTT , ADAMS , FORD
20 FORD SMITH , JONES , SCOTT , ADAMS , FORD
30 ALLEN ALLEN , WARD , MARTIN , BLAKE , TURNER , JAMES
30 WARD ALLEN , WARD , MARTIN , BLAKE , TURNER , JAMES
30 MARTIN ALLEN , WARD , MARTIN , BLAKE , TURNER , JAMES
30 BLAKE ALLEN , WARD , MARTIN , BLAKE , TURNER , JAMES
30 TURNER ALLEN , WARD , MARTIN , BLAKE , TURNER , JAMES
30 JAMES ALLEN , WARD , MARTIN , BLAKE , TURNER , JAMES
14 rows selected
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
推荐阅读
-
用简单易懂的方式指导你制作一款生成抖音风格动图的gif平台
-
用简单易懂的方式,重写并保持含义不变的标题:《快速理解化简版2048游戏,极大简化4096!》
-
android手机rom简单制作教程,【图片】ROM助手:任意安卓机型的ROM制作教程【a298t吧】_百度贴吧...
-
一个简单的C语言小程序:猜数字初学者版
-
Ps 初学者教程,使用简单的选择工具
-
VSCode搭建TypeScript环境全面解析:简单易懂的指南
-
简单教程:玩转APK的改之理(转载)
-
简单易懂的JSP入门基础全攻略
-
简单易懂的IPVS(LVS)负载均衡介绍与实战测试
-
简单易懂!在Centos 7.9上使用containerd运行时搭建Kubernetes集群教程