Welcome 微信登录

首页 / 数据库 / MySQL / oracle--rollup 和cube分组累计求和

group by 语句支持基本的having条件,还支持rollup和cube提供信息汇总功能,类似小计。rollup:纵向小计,从右向左逐个对每一列进行小结并在结果中生成独立的一行。只返回第一个分组条件指定的列的统计行。cube:横行小计
  1. select d.deptno,t.job,sum(t.sal) from emp t,dept d   
  2. where t.deptno=d.deptno   
  3. group by rollup(d.deptno,t.job)  
执行结果:***使用grouping_id显示指定的分组级别的记录。返回grouping()位向量的十进制值,GROUPING位向量的计算方法是将按照顺序对每一列调用GROUPING函数的结果组合起来。例:grouping_id(a,b,c),a为空就是0非空为1,b和c也一样,结果会得到一个三位数,用二进制转换成十进制就是了,a,b,c全是非空,即111就是7,三列就是7,如果是两列自然是11就是3select ... from 表 group by rollup(.....) having grouping_id(....)<=1
rollup(x,y)2列rollup(x,y,z)3列
总计是grouping_id=3总计是grouping_id=7
小计grouping_id=1小计grouping_id=3
记录是grouping_id=0记录是grouping_id=0
此时要求不显示最后总计行:
  1. select d.deptno,t.job,sum(t.sal) from emp t,dept d   
  2. where t.deptno=d.deptno   
  3. group by rollup(d.deptno,t.job)having grouping_id(d.deptno,t.job)<=1  
执行结果:实际情况中要展示结果集中汇总列加上小计和合计,此时这样处理:执行结果:Oracle中不同时间粒度的日期约束Oracle EBS安装中文patch相关资讯      Oracle基础 
  • Oracle基础介绍及常用相关SQL*PLUS  (03月11日)
  • Oracle 角色的两个特性和误区  (09/04/2012 05:56:16)
  • Oracle rac11.2.0.3.0的vip在重启  (09/02/2012 10:00:39)
  • Oracle中删除用户遇到的问题  (09/08/2012 20:01:42)
  • IMP-00008: unrecognized   (09/02/2012 10:03:25)
  • 在Oracle数据库上设置限制ip地址访  (09/02/2012 09:59:55)
本文评论 查看全部评论 (0)
表情: 姓名: 字数