前面介紹了分組函數的基本用法,下面介紹幾種關於GROUP BY更進階的用法。
1、ORACLE資料庫中的ROLLUP配合GROUP BY命令使用,可以提供資訊匯總功能(與"小計" 相似)
SQL> SELECT deptno, job,sum(sal) from emp1 group by deptno,job
2 order by deptno,job;
DEPTNO JOB SUM(SAL)
---------- --------------------------- ----------
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
20 ANALYST 6000
20 CLERK 1900
20 MANAGER 2975
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 5600
40 SALESMAN 6000
//會對每一個不同的dept,job產生一行獨立的結果
1 SELECT deptno, job,sum(sal) from emp1
2 group by rollup(deptno,job)
3* order by deptno,job
SQL> /
DEPTNO JOB SUM(SAL)
---------- --------------------------- ----------
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
10 8750
20 ANALYST 6000
20 CLERK 1900
20 MANAGER 2975
20 10875
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 5600
30 9400
40 SALESMAN 6000
40 6000
35025
//結果中除了上述的結果結果之外,還會對每一個deptno進行一個小結,並單獨產生一行,除此之 外還會對所有的sal求和並產生一行。