MSSql2005: Cube 和 RollUp 的区别
The differences between CUBE and ROLLUP are:
-
CUBE generates a result set that shows aggregates for all combinations of values in the selected columns.
-
ROLLUP generates a result set that shows aggregates for a hierarchy of values in the selected columns.
看完之后還是不知所云,所以按照書上的例子,測試了一下結果(先附上數據源和結果比較圖,相關sql語句附在文后):
可以看到Cube 比 RollUp多了三行.一比較發現,多的三行都是以Color列為緯度統計的。再結合書上說的那點區別,說RollUp是按層統計的。
猜想區別就是Cube對每個緯度都統計了,而RollUp對Group by 后跟的第一個緯度按照值不同順序統計完后,終止在Null,NUll,1117這一行,不再繼續。
我又加了一列Dept,調整之后再次比較結果,證實了我的猜想,RollUp以Item作為基本緯度,統計完所有情況后,就終止在Null,Null,NUll,1117這一行了。
下面附上sql語句:
CREATE TABLE Inventory (
Item varchar(53) NOT NULL,
Color varchar(53) NULL,
Department varchar(53) Null,
Quantity int NULL
);
INSERT Inventory VALUES ('Table', 'Red','IT', 223);
INSERT Inventory VALUES ('Table', 'White','HR', 54);
INSERT Inventory VALUES ('Table', 'Blue','ADM', 124);
INSERT Inventory VALUES ('Chair', 'Red', 'IT',210);
INSERT Inventory VALUES ('Chair', 'Blue','HR', 101);
INSERT Inventory VALUES ('Chair', 'White','ADM', 23);
INSERT Inventory VALUES ('Stand', 'Red','IT', 213);
INSERT Inventory VALUES ('Stand', 'Blue','HR', 141);
INSERT Inventory VALUES ('Stand', 'White','ADM', 28);
SELECT * FROM Inventory
SELECT Item, Color, Department,SUM(Quantity) AS Quantity
FROM Inventory
GROUP BY Item, Color,Department WITH CUBE;
SELECT Item, Color, Department,SUM(Quantity) AS Quantity
FROM Inventory
GROUP BY Item, Color,Department WITH Rollup
轉載于:https://www.cnblogs.com/54007/archive/2009/09/10/1564210.html
總結
以上是生活随笔為你收集整理的MSSql2005: Cube 和 RollUp 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker-compose 部署elk
- 下一篇: echarts统计x轴区间的数值