分析函数学习-->>分组函数rollup cube

Oracle 除了goup by 分组汇总还支持扩张Rollup, Cube 用法.


 .  Rollup  用法  Group By Rollup(A, B, C,...N)

   汇总:以(A, B, C,..N) 汇总-->>以(A, B, C ,..N-1)汇总...-->>以(A, B)汇总-->>以A汇总. 分组数n+1组

 

.  Cube  用法 Group By Cube(A, B, C,..N) 

   汇总:以(A,B,C,..N)汇总  -->>以(A,B), (A,C),...(A,N)汇总.....--->>以A汇总 -->>全表汇总.  分组数2的n次方

 

案例分析:

     A.  Rollup 用法

       SELECT t.deptno, t.job, SUM(t.sal)
          FROM emp t 
       GROUP BY ROLLUP(t.deptno, t.job);

     结果:

           

    说明:  红色部分代表以部门代码汇总求和

               蓝色部分代表全表汇总

     假设将上述的分组位置反过来呢?

         SELECT t.job,t.deptno,  SUM(t.sal)
            FROM emp t
         GROUP BY ROLLUP(t.job,t.deptno );

    结果:

      

  说明: 红色部分说明以员工职位红色汇总

               蓝色部分全表汇总

 B.  Cube 用法

       SELECT t.deptno,t.job,  SUM(t.sal)
          FROM emp t
       GROUP BY CUBE(t.deptno ,t.job);

    结果:

       

  说明:红色部门代表以员工职位汇总.

               黑色部分代表以部门汇总.

               蓝色部分代表以全表汇总.

   假设也将分组字段交换呢?

    SELECT t.job, t.deptno, SUM(t.sal)
        FROM emp t 
     GROUP BY CUBE(t.job,t.deptno);

 结果:

   

  注意对比两个. 数据都是按照同样的分组.分组字段位置不影响结果.

     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值