Oracle的rollup語句詳解


在多行查詢中,使用rollup語句能夠大大提高我們的操作效率,在開始接觸rollup語句
的時候,總是不能理解其中的順序,查了一些資料和前輩們的博客,實踐操作了幾次,在此總結一下,首先rollup是卷起的意思,大體能夠形容他的作用。
group by rollup(a,b)
這條語句相當於分組三次
第一次,a,b兩個約束條件,即a相同,b也相同的分為同一組
第二次,只是用a一個條件進行分組,把上一次形成的結果在進行分組,把a相同的分為一組
第三次,沒有約束條件,將整個表數據分為一組
這樣三次之后,我們就有了三個分組條件,那么sum函數,就會給每一個分組都執行一次計算總和
舉例如下:
 
 1 SQL> select deptno,job,sum(sal) from emp group by deptno,job order by deptno;
 2 單獨使用分組查詢
 3  
 4 DEPTNO JOB         SUM(SAL)
 5 ------ --------- ----------
 6     10 CLERK           1300
 7     10 MANAGER         2450
 8     10 PRESIDENT       5000
 9     20 ANALYST         6000
10     20 CLERK           1900
11     20 MANAGER         2975
12     30 CLERK            950
13     30 MANAGER         2850
14     30 SALESMAN        5600
15  
16 已選擇9行。
17  
18 SQL> select deptno,job,sum(sal) from emp group by rollup(deptno,job) order by deptno;
19  
20 DEPTNO JOB         SUM(SAL)
21 ------ --------- ----------
22     10 CLERK           1300 第一次分組的sum總和計算
23     10 MANAGER         2450
24     10 PRESIDENT       5000
25     10                 8750 第二次分組添加的計算
26     20 ANALYST         6000
27     20 CLERK           1900
28     20 MANAGER         2975
29     20                10875
30     30 CLERK            950
31     30 MANAGER         2850
32     30 SALESMAN        5600
33     30                 9400
34                       29025 第三次分組添加的計算
35 所以rollup函數進行多次分組計算
36  
37 已選擇13行。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM