91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle數據庫中有哪些分組函數

發布時間:2021-08-05 14:28:57 來源:億速云 閱讀:185 作者:Leah 欄目:數據庫

這篇文章給大家介紹Oracle數據庫中有哪些分組函數,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1、group by的使用

--根據DEPTNO和JOB進行分組。求相同DEPTNO,相同JOB的員工工資總和。

SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY E.DEPTNO,E.JOB ORDER BY E.DEPTNO;

Oracle數據庫中有哪些分組函數

2、group by 配合rollup的使用

rollup()--可以使用一個或者多個參數。意思是從右向左進行數據的匯總統計,并生成一行,rollup是個統計函數。

以下是根據分組情況進行統計,最終進行全部匯總。

(1)簡單的使用rollup--生成一行新數據。(要生成新的一行數據,還可以使用UNION ALL)

SELECT D.DUMMY FROM DUAL D GROUP BY ROLLUP(D.DUMMY);

Oracle數據庫中有哪些分組函數

(2)先根據E.DEPTNO,E.JOB進行分組,然后從右向左

SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.DEPTNO,E.JOB) ORDER BY E.DEPTNO;

Oracle數據庫中有哪些分組函數

針對以上的使用ROLLUP的結果的理解:

a:首先根據GROUP BY E.DEPTNO,E.JOB查詢出9條數據(除4,8,12,13外),在根據rollup的定義,從右向左,對ROLLUP中的參數進行小計

首先根據JOB(對所有的JOB進行匯總),匯總出4,8,12行,在根據E.DEPTNO(對所有的DEPTNO進行匯總),匯總出第十三行數據。

(3) 特殊情況

SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.JOB,E.DEPTNO) ORDER BY E.DEPTNO;

Oracle數據庫中有哪些分組函數

理解:首先根據GROUP BY E.DEPTNO,E.JOB查詢出前九條數據,其次對E.DEPTNO進行匯總,但是必須考慮JOB,也就是相同的JOB,的所有的工資總和,所以出現下面五條數據。

3、group by 配合cube的使用

SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY CUBE(E.DEPTNO,E.JOB) ORDER BY E.DEPTNO;

Oracle數據庫中有哪些分組函數

理解:CUBE會對條件中的每一個條件進行單獨的匯總:即對單獨的列進行匯總

GROUP  BY CUBE(E.DEPTNO,E.JOB)首先根據:GROUP BY  E.DEPTNO,E.JOB查詢數據,其次對E.JOB進行匯總(不考慮DEPTNO,單獨匯總,而ROLLUP是在同一個DEPTNO下面)再對E.DEPTNO進行匯總,最后全部匯總。

cube(a,b) 統計列包含:(a,b)、(a)、(b)、() cube(a,b,c) 統計列包含:(a,b,c)、(a,b)、(a,c)、(b,c)、(a)、(b)、(c)、()

4、GROUPING 的使用

GROUPING函數可以接受一列,返回0或者1。如果列值為空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查詢中使用。當需要在返回空值的地方顯示某個值時,GROUPING()就非常有用。

SELECT GROUPING(E.DEPTNO), E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.DEPTNO,E.JOB) ORDER BY E.DEPTNO;

Oracle數據庫中有哪些分組函數

可以使用decode或者case函數進行轉換這種不友好的顯示:

SELECT  CASE WHEN grouping(E.DEPTNO) = 1 THEN '總計' ELSE E.DEPTNO || '' END AS 部門, CASE WHEN grouping(E.JOB) = 1 AND grouping(E.DEPTNO) = 0 THEN '小計' ELSE E.JOB END AS 工作種類, SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.DEPTNO,E.JOB) ORDER BY E.DEPTNO;

Oracle數據庫中有哪些分組函數

SELECT DECODE(GROUPING(E.DEPTNO), 1, '總計', E.DEPTNO) AS 部門, CASE WHEN GROUPING(E.JOB) = 1 AND GROUPING(E.DEPTNO) = 0 THEN '小計' ELSE E.JOB END AS 工作種類, SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.DEPTNO, E.JOB) ORDER BY E.DEPTNO;

Oracle數據庫中有哪些分組函數

5、grouping sets提供了指定匯總集合條件的功能

根據E.DEPTNO,E.JOB分別匯總數據。

SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY GROUPING SETS(E.DEPTNO,E.JOB);

Oracle數據庫中有哪些分組函數


關于Oracle數據庫中有哪些分組函數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五大连池市| 黄山市| 内黄县| 乌鲁木齐县| 天气| 会泽县| 东辽县| 西宁市| 屏山县| 扬中市| 丰宁| 万年县| 西青区| 稻城县| 姜堰市| 道孚县| 永安市| 屯昌县| 通州市| 确山县| 嘉禾县| 瑞丽市| 木里| 本溪市| 济宁市| 利辛县| 太仓市| 德兴市| 太康县| 连城县| 安阳市| 武义县| 四子王旗| 勃利县| 汉中市| 米脂县| 南康市| 大厂| 普宁市| 大名县| 富顺县|