oracle
分析函式——cube,rollup
cube
功能描述:
注意:
rollup
功能描述:
注意:
如果是rollup(a, b, c)
的話,group by順序
(a、b、
c) (a、
b) (a)
最後對全表進行
group by
操作。
如果是group by cube(a, b, c)
,group by順序
(a、b、
c) (a、
b) (a、
c) (a), (b
、c)(b)
(c),
最後對全表進行
group by
操作。
create table studentscore (
student_name varchar2(20),
subjects varchar2(20),
score number )
insert into studentscore values('wbq','english',90);
insert into studentscore values('wbq','maths',95);
insert into studentscore values('wbq','chinese',88);
insert into studentscore values('czh','english',80);
insert into studentscore values('czh','maths',90);
insert into studentscore values('czh','history',92);
insert into studentscore values('cb','politics',70);
insert into studentscore values('cb','history',75);
insert into studentscore values('ldh','politics',80);
insert into studentscore values('ldh','chinese',90);
insert into studentscore values('ldh','history',95);
select
student_name,
subjects,
sum(score)
from studentscore
group by cube(student_name,subjects);
等同於以下標準
sql
select null,subjects,sum(score)
from studentscore
group by subjects
union
select student_name,null,sum(score)
from studentscore
group by student_name
union
select null,null,sum(score)
from studentscore
union
select student_name,subjects,sum(score)
from studentscore
group by student_name,subjects
select
student_name,
subjects,
sum(score)
from studentscore
group by rollup(student_name,subjects);
select student_name,null,sum(score)
from studentscore
group by student_name
union
select null,null,sum(score)
from studentscore
union
select student_name,subjects,sum(score)
from studentscore
group by student_name,subjects
select
grouping(student_name),
grouping(subjects),
student_name,
subjects,
sum(score)
from studentscore
group by cube(student_name,subjects)
order by 1,2;
select
grouping(student_name),
grouping(subjects),
student_name,
subjects,
sum(score)
from studentscore
group by rollup(student_name,subjects)
order by 1,2;
select
grouping_id(student_name,subjects),
student_name,
subjects,
sum(score)
from studentscore
group by cube(student_name,subjects)
order by 1;
select
grouping_id(student_name,subjects),
student_name,
subjects,
sum(score)
from studentscore
group by rollup(student_name,subjects)
order by 1;
select
grouping(student_name),
grouping(subjects),
case when grouping(student_name)=0 and grouping(subjects)=1 then '
學生成績合計'
when grouping(student_name)=1 and grouping(subjects)=0 then '
課目成績合計'
when grouping(student_name)=1 and grouping(subjects)=1 then '總計
' else ''
end summary,
student_name,
subjects,
sum(score)
from studentscore
group by cube(student_name,subjects)
order by 1,2;
Oracle分析函式八 CUBE,ROLLUP
oracle 分析函式 cube rollup cube 功能描述 注意 rollup 功能描述 注意 如果是 rollup a,b,c 的話,group by 順序 a b c a b a 最後對全表進行 group by 操作。如果是 group by cube a,b,c group by 順...
Oracle分析函式八 CUBE,ROLLUP
oracle 分析函式 cube rollup cube 功能描述 注意 rollup 功能描述 注意 如果是 rollup a,b,c 的話,group by 順序 a b c a b a 最後對全表進行 group by 操作。如果是 group by cube a,b,c group by 順...
Oracle分析函式八 CUBE,ROLLUP
oracle 分析函式 cube,rollup cube 功能描述 注意 rollup 功能描述 注意 如果是 rollup a,b,c 的話,group by 順序 a b c a b a 最後對全表進行 group by 操作。如果是 group by cube a,b,c group by 順...