cube子句的用法
2024-07-21 02:33:18
供稿:網友
cube子句在dw環境用的比較多,非凡是在產生交叉報表的情況,演示一個cube的例子
SQL 10G>create table test(sales varchar2(10),dest varchar2(10),revenue number);
Table created.
SQL 10G>insert into test values('smith','hangzhou',1000);
1 row created.
SQL 10G>insert into test values('smith','wenzhou',2000);
1 row created.
SQL 10G>insert into test values('allen','wenzhou',3000);
1 row created.
SQL 10G>insert into test values('allen','wenzhou',4000);
1 row created.
SQL 10G>commit;
Commit complete.
SQL 10G>select * from test;
SALES DEST REVENUE
---------- ---------- ----------
smith hangzhou 1000
smith wenzhou 2000
allen wenzhou 3000
allen wenzhou 4000
比如說我們想統計每個sales的總銷售收入,每個sales在各個城市的銷售收入,另外還想知道每個城市所有sales的銷售收入總額,以及所有sales的總收入
就像以下報表
hangzhou wenzhou
allen 7000 7000
smith 1000 2000 3000
1000 9000 10000
那我們運行下面這條語句就行了
SQL 10G>select sales,dest,sum(revenue) from test group by cube(sales,dest);
SALES DEST SUM(REVENUE)
---------- ---------- ------------
10000 所有sales的總銷售收入
wenzhou 9000 所有sales在溫州的銷售收入
hangzhou 1000 所有sales在杭州的銷售收入
allen 7000 allen的所有銷售收入
allen wenzhou 7000 allen在溫州的銷售收入
smith 3000 smith所有的銷售收入
smith wenzhou 2000 smith在溫州的銷售收入
smith hangzhou 1000 smith在杭州的銷售收入
8 rows selected.
假如不想統計城市這個維度,那么用rollup子句
hangzhou wenzhou
allen 7000 7000
smith 1000 2000 3000
10000
SQL 10G>select sales,dest,sum(revenue) from test group by rollup(sales,dest)
2 ;
SALES DEST SUM(REVENUE)
---------- ---------- ------------
allen wenzhou 7000 allen在溫州的銷售收入
allen 7000 allen的所有銷售收入
smith wenzhou 2000 smith在溫州的銷售收入
smith hangzhou 1000 smith在杭州的銷售收入
smith 3000 smith所有的銷售收入
10000 所有sales的總銷售收入
6 rows selected.