1、rollup使用
1)创建表
create table emp_test (empid int, depno varchar2(10), position varchar2(20),username varchar2(10), salary int);
2)准备数据
insert into emp_test values (1,'dep1','销售' , '刘能',1300);
insert into emp_test values (2,'dep1','开发工程师' , '赵四',2000);
insert into emp_test values (3,'dep1','系统建构' , '旺财',1800);
insert into emp_test values (4,'dep1','技术总监' , '王大拿',10000);
insert into emp_test values (5,'dep2', '销售' ,'长贵',3000);
insert into emp_test values (6,'dep2', '开发工程师' ,'王老七',5000);
insert into emp_test values (7,'dep2', '系统建构' ,'谢广坤',2500);
insert into emp_test values (8,'dep2', '技术总监' ,'玉田',3500);
insert into emp_test values (9,'dep3', '销售' , '刘一水',3300);
insert into emp_test values (10,'dep3', '开发工程师' ,'李大国',3800);
insert into emp_test values (11,'dep3', '系统建构' , '谢大脚',2800);
insert into emp_test values (12,'dep3', '技术总监' , '王云',1500);
insert into emp_test values (13,'dep4', '销售' , '王木生',4000);
insert into emp_test values (14,'dep4', '开发工程师' ,'大脑袋',8000);
insert into emp_test values (15,'dep4', '系统建构' , '天来',6000);
insert into emp_test values (16,'dep4', '技术总监' , '乔峰',10000);
3)用group by的分组效果,按照部门进行分组
select depno,sum(salary) from emp_test group by depno order by 1;
dep1 15100
dep2 14000
dep3 11400
dep4 28000
4)用rollup的分组效果,按照部门分组,并最终计算合计数据
select nvl(depno,'合计'),sum(salary) from emp_test group by rollup(depno) order by 1;
dep1 15100
dep2 14000
dep3 11400
dep4 28000
合计 68500
5)用rollup求部门小计,最后再求总计
select nvl(depno,'总合计') ,position,sum(salary) from emp_test group by rollup(depno,position) order by 1,2;
dep1 技术总监 10000
dep1 开发工程师 2000
dep1 系统建构 1800
dep1 销售 1300
dep1 15100
dep2 技术总监 3500
dep2 开发工程师 5000
dep2 系统建构 2500
dep2 销售 3000
dep2 14000
dep3 技术总监 1500
dep3 开发工程师 3800
dep3 系统建构 2800
dep3 销售 3300
dep3 11400
dep4 技术总监 10000
dep4 开发工程师 8000
dep4 系统建构 6000
dep4 销售 4000
dep4 28000
总合计 68500
2、cube与rollup的区别,
select depno,position,sum(salary) from emp_test group by cube(depno,position) order by 1,2;
dep1 技术总监 10000
dep1 开发工程师 2000
dep1 系统建构 1800
dep1 销售 1300
dep1 15100
dep2 技术总监 3500
dep2 开发工程师 5000
dep2 系统建构 2500
dep2 销售 3000
dep2 14000
dep3 技术总监 1500
dep3 开发工程师 3800
dep3 系统建构 2800
dep3 销售 3300
dep3 11400
dep4 技术总监 10000
dep4 开发工程师 8000
dep4 系统建构 6000
dep4 销售 4000
dep4 28000
技术总监 25000
开发工程师 18800
系统建构 13100
销售 11600
68500
cube比rollup统计信息多了最后四行。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9830023/viewspace-1189723/
,如需转载,请注明出处,否则将追究法律责任。