listagg within group函数的作用_oracletochar函数

listagg within group函数的作用_oracletochar函数前言:最近在写一些比较复杂的SQL,是一些统计分析类的,动不动就三四百行,也是首次写那么长的SQL,有用到一些奇形怪状的SQL函数,在这里结合网上的例子做一些笔记,以后用到不记得用法可以翻出来看!1.基础用法:LISTAGG(XXX,XXX)WITHINGROUP(ORDERBYXXX),就像聚合函数一样,通过Groupby语句,把每个Group的一个字段,拼接起来…

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

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

      前言:最近在写一些比较复杂的SQL,是一些统计分析类的,动不动就三四百行,也是首次写那么长的SQL,有用到一些奇形怪状的SQL函数,在这里结合网上的例子做一些笔记,以后用到不记得用法可以翻出来看!

1.基础用法:LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX),就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来

LISTAGG()其实可以把它当作SUM()函数来使用或者理解

(1)示例代码:  

WITH TEMP AS(  
SELECT 'CHINA' NATION ,'GUANGZHOU' CITY FROM DUAL UNION ALL  
SELECT 'CHINA' NATION ,'SHANGHAI' CITY FROM DUAL UNION ALL  
SELECT 'CHINA' NATION ,'BEIJING' CITY FROM DUAL UNION ALL  
SELECT 'USA' NATION ,'NEW YORK' CITY FROM DUAL UNION ALL  
SELECT 'USA' NATION ,'BOSTOM' CITY FROM DUAL UNION ALL  
SELECT 'JAPAN' NATION ,'TOKYO' CITY FROM DUAL   
)  
SELECT 
NATION,LISTAGG(CITY,',') WITHIN GROUP (ORDER BY CITY)  AS CITIES
FROM TEMP  
GROUP BY NATION

运行结果:

listagg within group函数的作用_oracletochar函数

(2)示例代码:

查询部门为20的员工列表:SELECT t.DEPTNO,t.ENAME FROM SCOTT.EMP t where t.DEPTNO = '20';

运行结果: 

listagg within group函数的作用_oracletochar函数

使用  listagg() WITHIN GROUP ()  将多行合并成一行:

SELECT
T .DEPTNO,
LISTAGG (T .ENAME, ',') WITHIN GROUP (ORDER BY T .ENAME) NAMES
FROM SCOTT.EMP T
WHERE
T .DEPTNO = '20' GROUP BY T .DEPTNO

运行结果:

listagg within group函数的作用_oracletochar函数

2.高级用法:over(partition by XXX)。在不使用Group by语句时候,也可以使用LISTAGG函数:

WITH TEMP AS(  
SELECT 500 POPULATION, 'CHINA' NATION ,'GUANGZHOU' CITY FROM DUAL UNION ALL  
SELECT 1500 POPULATION, 'CHINA' NATION ,'SHANGHAI' CITY FROM DUAL UNION ALL  
SELECT 500 POPULATION, 'CHINA' NATION ,'BEIJING' CITY FROM DUAL UNION ALL  
SELECT 1000 POPULATION, 'USA' NATION ,'NEW YORK' CITY FROM DUAL UNION ALL  
SELECT 500 POPULATION, 'USA' NATION ,'BOSTOM' CITY FROM DUAL UNION ALL  
SELECT 500 POPULATION, 'JAPAN' NATION ,'TOKYO' CITY FROM DUAL   
)  
SELECT POPULATION,  
NATION,  
CITY,  
LISTAGG(CITY,',') WITHIN GROUP (ORDER BY CITY) OVER (PARTITION BY NATION) RANK  
FROM TEMP

运行结果:

listagg within group函数的作用_oracletochar函数

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196289.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DNS 负载均衡

    DNS 负载均衡DNS负载均衡技术的实现原理是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。 最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地…

    2022年7月14日
    14
  • pyqt退出窗口_win10电脑软件闪退

    pyqt退出窗口_win10电脑软件闪退1.使用qtdesigner创建窗口界面这个都很熟悉了,就不重复说明了。(自行百度)2.pyqt将.ui文件转成python代码cd到.ui文件的目录,使用指令即可完成。得到一个py文件(一个类)红色部分是我自己加上去的,只是为了更好看懂代码,调试代码。3.运行pyqt生成的python代码,生成界面这里,需要添加几行代码!直接在Ui_Dialog类的py文件尾部添加如下代码:if__name__==”__main__”:app=QApplication(

    2022年8月28日
    3
  • Mybatis分页查询limit

    Mybatis分页查询limit首先,写一下分页查询的原理:sql语句:#语法SELECT*FROMtableLIMITstratIndex,pageSizeSELECT*FROMtableLIMIT5,10;//检索记录行6-15#为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为-1:SELECT*FROMtableLIMIT95,-1;//检索记录行96-last.#如果只给定一个参数,它表示返回最大的记录行数目:SELECT*FROMtableL

    2022年5月5日
    54
  • Mybatis分页插件PageHelper正确的用法(网上有2篇不够科学的文章)「建议收藏」

    Mybatis分页插件PageHelper正确的用法(网上有2篇不够科学的文章)

    2022年1月30日
    51
  • 【Ubuntu 】Ubuntu 更换国内源—解决终端下载错误或速度慢的问题「建议收藏」

    【Ubuntu 】Ubuntu 更换国内源—解决终端下载错误或速度慢的问题「建议收藏」前言:安装好ubuntu双系统后,默认的软件更新源是国外的,在国内使用速度很慢,用”aptinstallxxx”安装软件时可能出现”网络不可达”、”你的网络需要认证吗”、”无法定位软件包”等错误,所以我们需要更换成国内的源,这样才能正常安装和更新软件。目录一、ubuntu16.04更换国内源二、ubuntu18.04更换国内源三、UbuntuROS更换国内源

    2022年5月14日
    48
  • 反相加法器与同相加法器对比分析「建议收藏」

    反相加法器与同相加法器对比分析「建议收藏」最近对比复习了模电里面同相加法器与反相加法器电路。分析了他们之间的差别,并将分析过程记录在下,欢迎大家交流讨论。1、反相加法器R为平衡电阻,R=R1//R2//Rf。根据运算放大器的虚短虚断特性

    2022年7月3日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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