前面介绍了分组函数的基本用法,下面介绍几种关于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求和并生成一行。