当前位置:   article > 正文

Oracle分组函数之ROLLUP、GROUPING用法_oracle rollup grouping

oracle rollup grouping

一、简要介绍

  1. rollup用于分组统计,也属于oracle分析函数的一种,同理:grouping也是;
  2. 假设有n个维度,那么rollup会有n个聚合,cube会有2n个聚合
    rollup统计列
    rollup(a,b) 统计列包含:(a,b)、(a)、()
    rollup(a,b,c) 统计列包含:(a,b,c)、(a,b)、(a)、()

二、实践过程

select a.deptname name, sum(b.sal) total
  from dept a, emp b
 where a.deptno = b.deptno
 group by a.deptname
union all
select null,sum(b.sal)
from dept a, emp b
 where a.deptno = b.deptno;
 等同于:
select a.deptname, sum(b.sal)
from dept a, emp b
where a.deptno = b.deptno
group by rollup(a.deptname);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述

select a.deptname name, b.job, sum(b.sal) total
  from dept a, emp b
 where a.deptno = b.deptno
 group by rollup(a.deptname, b.job)
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

 select case grouping(a.deptname)
          when 1 then
           '总计'
          else
           a.deptname
        end as dname,
        case grouping(b.job)
          when 1 then
           '分计'
          else
           b.job
        end as job,
        sum(b.sal) total
   from dept a, emp b
  where a.deptno = b.deptno
  group by rollup(a.deptname, b.job)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/345241
推荐阅读
相关标签
  

闽ICP备14008679号