oracle中cube rollup子句的用法

2021-04-18 12:32:22 字數 2153 閱讀 6151

cube子句在dw環境用的比較多,特別是在產生交叉報表的情況,演示乙個cube的例子

sql 10g>create table test(sales varchar2(10),dest varchar2(10),revenue number);

table created.

sql 10g>insert into test values('**ith','hangzhou',1000);

1 row created.

sql 10g>insert into test values('**ith','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

---------- ---------- ----------

**ith   hangzhou     1000

**ith   wenzhou     2000

allen   wenzhou     3000

allen   wenzhou     4000

比如說我們想統計每個sales的總銷售收入,每個sales在各個城市的銷售收入,另外還想知道每個城市所有sales的銷售收入總額,以及所有sales的總收入

就像以下報表

hangzhou wenzhou

allen          7000   7000

**ith  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在溫州的銷售收入

**ith            3000  **ith所有的銷售收入

**ith   wenzhou   2000  **ith在溫州的銷售收入

**ith   hangzhou  1000  **ith在杭州的銷售收入

8 rows selected.

假如不想統計城市這個維度,那麼用rollup子句

hangzhou wenzhou

allen    7000  7000

**ith   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的所有銷售收入

**ith   wenzhou   2000 **ith在溫州的銷售收入

**ith   hangzhou   1000 **ith在杭州的銷售收入

**ith             3000 **ith所有的銷售收入

10000 所有sales的總銷售收入

6 rows selected.

資料引用:http://www.knowsky.com/385442.html

oracle中累計求和 oracle累計求和

poj2001 shortest prefixes trie樹應用 沉迷wow又頹了兩天orz,暴雪爸爸要在國服出月卡了.這是要我好好學習嗎?趕緊來刷題了.oj 題目大意是求所有字串裡每乙個字元 硬體相關 jtag介面 jtag joint test action group,聯合測試行動小組 是一...

oracle中累計求和 oracle累計求和

oracle累計求和 將當前行某列的值與前面所有行的此列值相加,即累計求和 方法一 with t as select 1 val from dual union all select 3 from dual union all select 5 from dual union all select ...

Oracle中臨時表

最近考慮到我們的資料庫端寫儲存過程關於臨時表使用的情況,由於我們 現在還不清楚資料庫端到底是怎麼處理的,是否和sql server的處理方式相 同,是否會存在隱患等等一些問題,為了避免將來不必要的麻煩我做了深 入的研究和檢視了一些權威的資料,現在和大家共享,希望大家在處理 oracle臨時表是注意一...