sql中 with rollup 、with cube、grouping 統計函數用法

with rollup 、with cube、grouping
CUBE 和 ROLLUP 之間的區別在於:
CUBE 生成的結果集顯示了所選列中值的全部組合的聚合。
ROLLUP 生成的結果集顯示了所選列中值的某一層次結構的聚合。
grouping:
當用 CUBE 或 ROLLUP 運算符添加行時,附加的列輸出值爲1,當所添加的行不是由 CUBE 或 ROLLUP 產生時,附加列值爲0。
web

(GROUPING這個函數是反映目標列是否聚合,如何聚合則返回1,不然返回0)函數


--例如
DECLARE@TTABLE(名稱 VARCHAR(1) , 出版商 VARCHAR(10),  價格1  INT, 價格2 INT)
INSERT@T
SELECT'a''北京'1122UNIONALL
SELECT'a''四川'2233UNIONALL
SELECT'b''四川'1223UNIONALL
SELECT'b''北京'1020UNIONALL
SELECT'b''昆明'2030
SELECT
名稱,
出版商,
SUM(價格1) AS 價格1,
SUM(價格2) AS 價格2,
GROUPING(名稱) AS CHECK名稱,
GROUPING(出版商) AS CHECK出版商
FROM@TGROUPBY 名稱,出版商 WITH CUBEspa

/*
名稱   出版商        價格1         價格2         CHECK名稱 CHECK出版商
---- ---------- ----------- ----------- ------- --------
a    北京         11          22          0       0
a    四川         22          33          0       0
a    NULL       33          55          0       1
b    北京         10          20          0       0
b    昆明         20          30          0       0
b    四川         12          23          0       0
b    NULL       42          73          0       1
NULL NULL       75          128         1       1
NULL 北京         21          42          1       0
NULL 昆明         20          30          1       0
NULL 四川         34          56          1       0
(所影響的行數爲 11 行)
*/
--分析
/*
group by 兩列:名稱有兩個類別A,B;全部由CUBE運算而生成行的是
名稱   出版商        價格1         價格2         CHECK名稱 CHECK出版商
---- ---------- ----------- ----------- ------- --------
a    NULL       33          55          0       1
b    NULL       42          73          0       1
出版商有三個類別,全部由CUBE運算而生成行的是
名稱   出版商        價格1         價格2         CHECK名稱 CHECK出版商
---- ---------- ----------- ----------- ------- --------
NULL 北京         21          42          1       0
NULL 昆明         20          30          1       0
NULL 四川         34          56          1       0
以及
NULL NULL       75          128         1       1
*/
orm

SELECT
名稱,
出版商,
SUM(價格1) AS 價格1,
SUM(價格2) AS 價格2
FROM@TGROUPBY 名稱,出版商 WITH ROLLUP
ci

 

/*
名稱   出版商        價格1         價格2
---- ---------- ----------- -----------
a    北京         11          22
a    四川         22          33
a    NULL       33          55
b    北京         10          20
b    昆明         20          30
b    四川         12          23
b    NULL       42          73
NULL NULL       75          128
*/it

相關文章
相關標籤/搜索