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 OCP(12):ROLLUP & CUBEOracle
- oracle中distinct和group by的區別Oracle
- Oracle中Date和Timestamp的區別Oracle
- MySQL和Oracle的區別MySqlOracle
- Oracle和MySQL的區別OracleMySql
- 解析數倉OLAP函式:ROLLUP、CUBE、GROUPING SETS函式
- Oracle中單引號和雙引號的區別Oracle
- Linux中&&和&,|和||用法及區別詳解!Linux
- Oracle dba角色和sysdba的區別Oracle
- Oracle 和 mysql的9點區別OracleMySql
- Java集合系列(三):HashSet、LinkedHashSet、TreeSet的使用方法及區別Java
- Java集合系列(二):ArrayList、LinkedList、Vector的使用方法及區別Java
- Oracle 中varchar2 和nvarchar2區別Oracle
- oracle partition by group by,詳解partition by和group by對比Oracle
- PHP 中 include 和 require 的概要及區別介紹PHPUI
- Python中threading的join和setDaemon的區別及用法[例子]Pythonthread
- Java集合系列(四):HashMap、Hashtable、LinkedHashMap、TreeMap的使用方法及區別JavaHashMap
- new 和 malloc 的區別 及使用
- JavaScript中for in 和for of的區別JavaScript
- Js中for in 和for of的區別JS
- mysql中!=和is not的區別MySql
- Python中is和==的區別Python
- JavaScript中==和===的區別JavaScript
- Linux中“>”和“>>”的區別Linux
- Python 中 is 和 == 的區別Python
- mysql中“ ‘ “和 “ ` “的區別MySql
- MySQL 中 VARCHAR 最大長度及 CHAR 和 VARCHAR 的區別MySql
- dg和ogg的區別--oracle資料庫Oracle資料庫
- NULL在oracle和mysql索引上的區別NullOracleMySql索引
- button 和input 的區別及在表單form中的用法ORM
- rollup配置及使用
- PHP 中的 -> 和 :: 的區別PHP
- oracle知識整理(1) union和union all的區別,left join和right join的區別(各種join的區別)Oracle
- localStorage,sessionStorage和cookie的區別及使用SessionCookie
- WebGL和OpenGL的區別及關係Web
- java 中equals和==的區別Java
- SQL中where和on的區別SQL
- deferred中done和then的區別
- Oracle普通檢視和物化檢視的區別Oracle