首页 > 数据库技术 > 详细

oracle group by中cube和rollup字句的使用方法及区别

时间:2015-05-06 12:31:23      阅读:352      评论:0      收藏:0      [点我收藏+]

  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);

commit;
测试数据
  • 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中cube和rollup字句的使用方法及区别

原文:http://www.cnblogs.com/HondaHsu/p/4481218.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!