oracle group by中cube和rollup字句的使用方法及區別
oracle group by中rollup和cube的區別:
Oracle的GROUP BY語句除了最基本的語法外,還支援ROLLUP和CUBE語句。如果是ROLLUP(A, B, C)的話,
首先會對(A、B、C)進行GROUP BY,然後對(A、B)進行GROUP BY,然後是(A)進行GROUP BY,最後對全表進行GROUP BY操作。
如果是GROUP BY CUBE(A, B, C),則首先會對(A、B、C)進行GROUP BY,然後依次是(A、B),(A、C),(A),(B、C),(B),(C),
最後對全表進行GROUP BY操作。
測試資料:
/*
Oracle的GROUP BY語句除了最基本的語法外,還支援ROLLUP和CUBE語句。
*/
--建立表
create table fzq
(
name varchar(20),
calss varchar(2),
kemu varchar(4),
chengji varchar(3)
)
--插入資料
insert into fzq values
('11','1','數學','90');
insert into fzq values
('11','1','語文','68');
insert into fzq values
('12','1','數學','90');
insert into fzq values
('12','1','語文','88');
insert into fzq values
('22','2','數學','70');
insert into fzq values
('22','2','語文','88');
insert into fzq values
('33','2','數學','95');
insert into fzq values
('33','2','語文','98');
--測試SQL
select * from fzq;
select calss,name,sum(chengji) from fzq group by calss,name;
select calss,name,sum(chengji) from fzq group by cube(calss,name) order by calss;
select calss,name,sum(chengji) from fzq group by rollup(calss,name) order by calss;
select calss,name,sum(chengji) from fzq group by grouping sets(calss,name);
Oracle的GROUP BY語句除了最基本的語法外,還支援ROLLUP和CUBE語句。如果是ROLLUP(A, B, C)的話,
首先會對(A、B、C)進行GROUP BY,然後對(A、B)進行GROUP BY,然後是(A)進行GROUP BY,最後對全表進行GROUP BY操作。
如果是GROUP BY CUBE(A, B, C),則首先會對(A、B、C)進行GROUP BY,然後依次是(A、B),(A、C),(A),(B、C),(B),(C),
最後對全表進行GROUP BY操作。
測試資料:
/*
Oracle的GROUP BY語句除了最基本的語法外,還支援ROLLUP和CUBE語句。
*/
--建立表
create table fzq
(
name varchar(20),
calss varchar(2),
kemu varchar(4),
chengji varchar(3)
)
--插入資料
insert into fzq values
('11','1','數學','90');
insert into fzq values
('11','1','語文','68');
insert into fzq values
('12','1','數學','90');
insert into fzq values
('12','1','語文','88');
insert into fzq values
('22','2','數學','70');
insert into fzq values
('22','2','語文','88');
insert into fzq values
('33','2','數學','95');
insert into fzq values
('33','2','語文','98');
--測試SQL
select * from fzq;
select calss,name,sum(chengji) from fzq group by calss,name;
select calss,name,sum(chengji) from fzq group by cube(calss,name) order by calss;
select calss,name,sum(chengji) from fzq group by rollup(calss,name) order by calss;
select calss,name,sum(chengji) from fzq group by grouping sets(calss,name);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25954236/viewspace-1651078/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE ROLLUP和CUBE的使用Oracle
- GROUP BY中ROLLUP/CUBE/GROUPING/GROUPING SETS使用示例
- oracle中distinct和group by的區別Oracle
- Oracle OCP(12):ROLLUP & CUBEOracle
- group by分組函式之rollup與cube用法函式
- MySQL ROLLUP和CUBE問題MySql
- Oracle的rollup、cube、grouping sets函式Oracle函式
- oracle rollup,cube子句的應用舉例;Oracle
- Oracle PL/SQL之GROUP BY CUBEOracleSQL
- group by中cube含義解析
- oracle之group by,having和where的區別Oracle
- DISTINCT和GROUP BY的區別
- [SQL] rollup & cube 分組函式用法及一例SQL函式
- FTP 中ascii 和bin 的區別和使用方法FTPASCII
- 分析函式rollup||cube學習函式
- rollup cube 超匯聚函式函式
- group by中rollup的以及grouping含義解析
- oracle 高階分組group by cube擴充Oracle
- oracle中in和exists的區別Oracle
- Mybatis中#{}和${}傳參的區別及#和$的區別小結MyBatis
- oracle10g後面的聚合運算函式:cube、rollup等Oracle函式
- Python中各種括號的區別、用途及使用方法Python
- oracle rollup,cube子句的應用舉例(可以實現總計,小計)Oracle
- oracle中 DG和GG的區別Oracle
- Oracle中truncate和delete的區別Oracledelete
- (轉)ORACLE 中IN和EXISTS的區別Oracle
- Oracle中latch和lock的區別Oracle
- oracle中Window和Window GroupOracle
- Oracle中Date和Timestamp的區別Oracle
- oracle中rownum和rowid的區別Oracle
- Oracle rman中recover和restore的區別:OracleREST
- Oracle中User和Schema的區別和聯絡Oracle
- 解析數倉OLAP函式:ROLLUP、CUBE、GROUPING SETS函式
- Oracle中sys和system的區別小結Oracle
- 在Oracle中session和process的區別(轉)OracleSession
- Oracle中truncate和delete的區別(例項)Oracledelete
- Linux中&&和&,|和||用法及區別詳解!Linux
- Spark2 Dataset多維度統計cube與rollupSpark