listagg小记录[通俗易懂]

listagg小记录[通俗易懂]listagg的作用是将分组范围内的所有行特定列的记录加以合并成行。函数签名中的measure_expr为分组中每个列的表达式,而delimiter为合并分割符。如果delimiter不设置的话,就表示无分割符。  中间withingroup后面的order_by_clause表示的是进行合并中要遵守的排序顺序。而后面的over子句表明listagg是具有分析函数analyze

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

    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

 



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197303.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 一个有关未来十年的预言「建议收藏」

    一个有关未来十年的预言「建议收藏」一个有关未来十年的预言

  • zabbix监控elasticsearch集群「建议收藏」

    zabbix监控elasticsearch集群「建议收藏」今天同事负责的es集群发生了脑裂,具体原因还有待查看日志。顺便分享一套zabbix监控es集群的脚本。生产改进与建议:所有监控统一status值,比如0是ok的,1是警告,2是error因为es集群会自己维护整个集群的元数据,因此数据收集不是按节点来的而是整个集群现在的配置是从salt的pillar中获取端口(或者说集群名)然后渲染下面的脚本,然后再自动发现集群下面的节点。建议集群也使…

  • mysql左连接查询慢[通俗易懂]

    mysql左连接查询慢[通俗易懂]之前一直用的Oracle,今天用mysql查询一个很普通的左连接的时候,发现速度很慢。selectx.fid,x.isbirt,x.fscoresum,x.fsystemscore,x.feffectivescorefromtableaxleftjointablebhonx.fitemid=h.fidwhereh.fprojectid=’’这个sql耗时:2s多。我有点吓到了,后来我百度后发现然后我换了表的位置selectx.fid,x.isbirt,x.fsc

  • std::vector find_vectornator工具使用

    std::vector find_vectornator工具使用vector本身是没有find这一方法,其find是依靠algorithm来实现的。#include<iostream>#include<algorithm>#include<vector>intmain(){usingnamespacestd;vector<int>vec;vec.push_back(1);vec.push_back(2);vec.push_back(3);v

  • requestparam注解接的收的是什么格式(玄机赋注解)

    1、作用:@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)2、语法:语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)value:参数名required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含…

  • C语言break和continue

    C语言break和continuebreak用法跳出循环语句(for循环、while循环、do…while循环) 跳出switch语句注意:C语言break只能用于这两种情况。break语句不能用于循环语句和switch语句之外的任何其他语句中,不然编译器会报错。continue用法只用于结束本次循环(for循环、while循环、do…while循环),进行下一次循环注意…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号