rollup,cube,grouping

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
-------------------------------------
请使用浏览器的分享功能分享到微信等