drop table test01 purge;
create table test01
(
emp_no number primary key, --雇员号
dep_no number, --部门号
sal number --薪水
);
--初始化四个雇员
insert into test01 values(1,10,3000);
insert into test01 values(2,10,2000);
insert into test01 values(3,20,2200);
insert into test01 values(4,30,2500);
commit;
--1,按部门汇总薪水,并显示总值
select dep_no, sum(sal) from test01 group by rollup(dep_no);
-- ---- -------
10 5000
20 2200
30 2500
9700
-------------------------------------
select dep_no, sum(sal) from test01 group by cube(dep_no);
-- ---- -------
9700
10 5000
20 2200
30 2500
-------------------------------------
--2,按雇员显示薪水,并显示部门汇总值
select emp_no,dep_no, sum(sal) from test01 group by rollup(dep_no, emp_no);
-- ---- -------
1 10 3000
2 10 2000
10 5000
3 20 2200
20 2200
4 30 2500
30 2500
9700
-------------------------------------
select emp_no,dep_no, sum(sal) from test01 group by cube(dep_no, emp_no);
-- ---- -------
9700
1 3000
2 2000
3 2200
4 2500
10 5000
1 10 3000
2 10 2000
20 2200
3 20 2200
30 2500
4 30 2500
-------------------------------------
--3,显示汇总值标志grouping
select emp_no, dep_no, grouping(emp_no),grouping(dep_no), sum(sal) from test01 group by rollup(dep_no,emp_no);
-- --- -- -- ------
1 10 0 0 3000
2 10 0 0 2000
10 1 0 5000
3 20 0 0 2200
20 1 0 2200
4 30 0 0 2500
30 1 0 2500
1 1 9700
-------------------------------------