一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Oracle 19c 新特性:ANY_VALUE 函數(shù)和 LISTAGG 的增強(qiáng)

 數(shù)據(jù)和云 2020-07-01

注:Oracle 的 LiveSQL 站點已經(jīng)升級到 19c 版本,可以通過該網(wǎng)站來測試 19c 的新特性。

在Oracle 19c中,一個新的函數(shù) ANY_VALUE 被引入進(jìn)來,這個函數(shù)的作用是基于ORDER BY定義返回每個組中的任何值,通過這一個函數(shù),可以消除將每個列都指定為GROUP BY子句的一部分的必要性。

看一個示例。

select d.deptno,d.dname,sum(e.sal) 

from scott.dept d,scott.emp e

where e.deptno = d.deptno group by d.deptno,d.dname

Result Set 13

DEPTNODNAMESUM(E.SAL)
10ACCOUNTING8750
20RESEARCH10875
30SALES9400

在有了 ANY_VALUE 之后,Group By之后就不再需要增加冗余的字段,SQL 再次變得優(yōu)雅:

select d.deptno,any_value(d.dname) as DEPTNAME,sum(e.sal) 

from scott.dept d,scott.emp e

where e.deptno = d.deptno group by d.deptno

ANY_VALUE 也可以作為類似 MAX/MIN 的窗口函數(shù)發(fā)揮作用。

Listagg 是 Oracle 11.2 中新增的函數(shù),對于指定的度量,LISTAGG對ORDER BY子句中指定的每個組內(nèi)的數(shù)據(jù)進(jìn)行排序,然后連接度量列的值。

  • 作為單集聚合函數(shù),LISTAGG對所有行進(jìn)行操作并返回單個輸出行。

  • 作為一個組集聚合,該函數(shù)對GROUP BY子句定義的每個組進(jìn)行操作并返回一個輸出行。

  • 作為分析函數(shù),LISTAGG根據(jù)query_partition_clause中的一個或多個表達(dá)式將查詢結(jié)果集劃分為組。

由于具有靈活的數(shù)據(jù)操作性,LISTAGG函數(shù)是行列轉(zhuǎn)換的首選。以下是一個簡單的示例:

SELECT deptno,

 LISTAGG(ename, ',') WITHIN GROUP(ORDER BY ename) AS employees

FROM scott.emp GROUP BY deptno;

DEPTNOEMPLOYEES
10CLARK,KING,MILLER
20ADAMS,FORD,JONES,SCOTT,SMITH
30ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD

大家可以在 livesql.oracle.com 網(wǎng)站體驗 19c 的新特性:

在19c之前,Listagg 函數(shù)不能對轉(zhuǎn)換的結(jié)果去重,如果你希望計算結(jié)果不包含重復(fù)值,則還需要進(jìn)行一次嵌套處理。如下是常見的帶有重復(fù)值計算輸出:

select d.dname,   

       listagg (e.job,', ')     

                within group (order by e.job) jobs  

  from scott.dept d, scott.emp e     

 where d.deptno = e.deptno     

 group by d.dname

DNAMEJOBS
ACCOUNTINGCLERK, MANAGER, PRESIDENT
RESEARCHANALYST, ANALYST, CLERK, CLERK, MANAGER
SALESCLERK, MANAGER, SALESMAN, SALESMAN, SALESMAN, SALESMAN

在Oracle 19c中,這個函數(shù)向前邁進(jìn)了一小步,支持 Distinct 關(guān)鍵字,可以通過加入這個關(guān)鍵字直接去除重復(fù)值,SQL 又向優(yōu)雅邁進(jìn)了一小步:

select d.dname,   

       listagg (DISTINCT e.job,', ')     

                within group (order by e.job) jobs  

  from scott.dept d, scott.emp e     

 where d.deptno = e.deptno     

 group by d.dname   

DNAMEJOBS
ACCOUNTINGCLERK, MANAGER, PRESIDENT
RESEARCHANALYST, CLERK, MANAGER
SALESCLERK, MANAGER, SALESMAN

在19c 中,Oracle 還對位運算進(jìn)行了增強(qiáng),增加了一系列的位運算函數(shù),通過位運算,避免一些排序操作,可以實現(xiàn)對于性能的巨大提升。

例如,如下案例,通過物化視圖的自動改寫,可以實現(xiàn)顯著的性能提升。

希望提前體驗19c 的同學(xué)們可以去 livesql.oracle.com 進(jìn)行測試,19c 馬上到來,抓緊時間學(xué)習(xí)吧!


資源下載

關(guān)注公眾號:數(shù)據(jù)和云(OraNews)回復(fù)關(guān)鍵字獲取

2018DTCC , 數(shù)據(jù)庫大會PPT

2018DTC,2018 DTC 大會 PPT

DBALIFE ,“DBA 的一天”海報

DBA04 ,DBA 手記4 電子書

122ARCH ,Oracle 12.2體系結(jié)構(gòu)圖

2018OOW ,Oracle OpenWorld 資料

學(xué)習(xí)交流

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    九九热在线视频观看最新| 中文字幕日韩欧美理伦片| 亚洲熟妇av一区二区三区色堂 | 好吊日在线视频免费观看| 99亚洲综合精品成人网色播| 日本欧美在线一区二区三区| 91亚洲人人在字幕国产| 国产农村妇女成人精品| 国产一区一一一区麻豆| 日本在线视频播放91| 亚洲中文在线男人的天堂| 日本淫片一区二区三区| 成年人免费看国产视频| 在线免费视频你懂的观看 | 国产精品午夜性色视频| 日韩成人动作片在线观看| 97人妻精品免费一区二区| 蜜桃传媒在线正在播放| 欧美成人国产精品高清| 男人操女人下面国产剧情| 亚洲欧美国产网爆精品| 国产又粗又硬又长又爽的剧情| 高清不卡视频在线观看| 亚洲婷婷开心色四房播播| 亚洲国产av一二三区| 久久女同精品一区二区| 国产毛片av一区二区三区小说| 五月激情五月天综合网| 在线观看那种视频你懂的| 高清国产日韩欧美熟女| 日本精品最新字幕视频播放| 欧美亚洲综合另类色妞| 日本丰满大奶熟女一区二区| 亚洲欧美日韩综合在线成成| 搡老熟女老女人一区二区| 日韩欧美综合中文字幕| 日本高清不卡一二三区| 亚洲一区二区三在线播放| 91偷拍与自偷拍精品| 国产传媒欧美日韩成人精品| 欧美精品女同一区二区|