sql 中rollup 用法
rollup 運算子生成的結果集類似於 cube 運算子生成的結果集。
下面是 cube 和 rollup 之間的具體區別:
下面對比一下group by 、cube 和 rollup後的結果
建立表:
create table depart
(部門 char(10),員工 char(6),工資 int)
insert into depart select 'a','zhang',100
insert into depart select 'a','li',200
insert into depart select 'a','wang',300
insert into depart select 'a','zhao',400
insert into depart select 'a','duan',500
insert into depart select 'b','duan',600
insert into depart select 'b','duan',700
部門 員工 工資
a zhang 100
a li 200
a wang 300
a zhao 400
a duan 500
b duan 600
b duan 700
(1)group by
select 部門,員工,sum(工資)as total
from depart
group by 部門,員工
結果:a duan 500
b duan 1300
a li 200
a wang 300
a zhang 100
a zhao 400
(2)rollup
select 部門,員工,sum(工資)as total
from depart
group by 部門,員工 with rollup
結果如下:
a duan 500
a li 200
a wang 300
a zhang 100
a zhao 400
a null 1500
b duan 1300
b null 1300
null null 2800
rollup結果集中多了三條彙總資訊:即部門a的合計,部門b的合計以及總合計。其中將部門b中的duan合計。
等價於下列sql語句
select 部門,員工,sum(工資)as total
from depart
group by 部門,員工
union
select 部門,'null',sum(工資)as total
from depart
group by 部門
union
select 'null','null',sum(工資)as total
from depart
結果:a duan 500
a li 200
a null 1500
a wang 300
a zhang 100
a zhao 400
b duan 1300
b null 1300
null null 2800
(3)cube
select 部門,員工,sum(工資)as total
from depart
group by 部門,員工 with cube
結果:a duan 500
a li 200
a wang 300
a zhang 100
a zhao 400
a null 1500
b duan 1300
b null 1300
null null 2800
null duan 1800
null li 200
null wang 300
null zhang 100
null zhao 400
cube的結果集是在 rollup結果集的基礎上多了5行,這5行相當於在rollup結果集上在union 上以員工 (即cube)為 group by的結果。
select 部門,員工,sum(工資)as total
from depart
group by 部門,員工 with cube
等價於下列的sql語句:
select 部門,員工,sum(工資)as total
from depart
group by 部門,員工 with rollup
union
select 'null',員工,sum(工資)as total
from depart
group by 員工
結果:null null 2800
a null 1500
a duan 500
a li 200
a wang 300
a zhang 100
a zhao 400
b null 1300
b duan 1300
null duan 1800
null li 200
null wang 300
null zhang 100
null zhao 400
這樣一對比結果就全明白了。
關於rollup和cube等高階函式
oracle提供了很多高階的統計函式,如rollup cube grouping grouping sets,同時在資料庫層還提供了維 立方等物件,可以通過定義維和立方實現查詢重寫,提高資料倉儲的 select 批次號,種類,單位型別,sum 金額 count 1 from資料表 where批次號 ...
db2的rollup和cube函式
rollup的效果就是對group by後面的乙個分組列名進行統計。bankid為第一列 select case when grouping branchid 0 then branchid else 小計 end as branchid,case when grouping bankid 0 th...
使用CUBE和ROLLUP對資料進行彙總
it專家網獨家 想要找乙個既快捷又有效的方法來對您儲存在資料庫裡的資料進行彙總分析嗎?sql語言中的rollup和cube命令提供了乙個非常有用的工具,可以讓您快速深入地獲取資料的各種內在性質。rollup和cube是sql的擴充套件命令,可以在sql server 6.5 及以上版本 和oracl...