概述
今天主要分享下Oracle数据库分组函数group by 、 rollup、cude、grouping 、grouping sets的常用用法,以下以Oracle自带schema做演示。
1、group by的使用
--根据DEPTNO和JOB进行分组。求相同DEPTNO,相同JOB的员工工资总和。
SELECTE.DEPTNO,E.JOB,SUM(E.SAL)FROMEMP EGROUPBYE.DEPTNO,E.JOBORDERBYE.DEPTNO;
2、group by 配合rollup的使用
rollup()--可以使用一个或者多个参数。意思是从右向左进行数据的汇总统计,并生成一行,rollup是个统计函数。
以下是根据分组情况进行统计,最终进行全部汇总。
(1)简单的使用rollup--生成一行新数据。(要生成新的一行数据,还可以使用UNION ALL)
SELECTD.DUMMYFROMDUAL DGROUPBYROLLUP(D.DUMMY);
(2)先根据E.DEPTNO,E.JOB进行分组,然后从右向左
SELECTE.DEPTNO,E.JOB,SUM(E.SAL)FROMEMP EGROUPBYROLLUP(E.DEPTNO,E.JOB)ORDERBYE.DEPTNO;
针对以上的使用ROLLUP的结果的理解:
a:首先根据GROUP BY E.DEPTNO,E.JOB查询出9条数据(除4,8,12,13外),