GROUPING SETS,ROLLUP,CUBE用法介绍

准备:

-- 按职位分组

SELECT job,
       AVG(TO_NUMBER(sal))
  FROM emp
 GROUP BY job ;

结果:

CLERK1037.5
SALESMAN1400
PRESIDENT5000
MANAGER2758.333
ANALYST3000
--

-- 按部门分组

SELECT deptno,
       AVG(TO_NUMBER(sal))
  FROM emp
 GROUP BY deptno ;

结果如下:

301566.667
202175
102916.667
--
-- 按部门,职位分组统计

SELECT deptno,
       job,
       AVG(TO_NUMBER(sal))
  FROM emp
 GROUP BY deptno,job
 ORDER BY deptno ; 

结果如下:

10CLERK1300
10MANAGER2450
10PRESIDENT5000
20ANALYST3000
20CLERK950
20MANAGER2975
30CLERK950
30MANAGER2850
30SALESMAN1400
---------------------------------------------------------------------------------------------------

接下来就分别介绍一下GROUPING SETS,ROLLUP,CUBE的用法

-- GROUPING SETS用法

-- GROUPING SETS综合不同字段单独进行分组的结果。如上例就是汇总按deptno和job分组统计emp表的平均工资情况

SELECT deptno,
                 job,
        AVG(TO_NUMBER(sal))
    FROM emp
  GROUP BY GROUPING SETS(deptno,job) ;

结果如下:

 CLERK1037.5
 SALESMAN1400
 PRESIDENT5000
 MANAGER2758.333
 ANALYST3000
30 1566.667
20 2175
10 2916.667

--

--  ROLLUP 用法

-- ROLLUP 在原有的统计结果的基础上进行横向汇总。上例中先按部门,职位分组统计各部门中各职位的平均工资,然后再统计各部门的平均工资。

SELECT deptno,
       job,
       AVG(TO_NUMBER(sal))
  FROM emp
 GROUP BY ROLLUP(deptno,job) ; 

-- 结果如下:

10CLERK1300
10MANAGER2450
10PRESIDENT5000
10 2916.667
20CLERK950
20ANALYST3000
20MANAGER2975
20 2175
30CLERK950
30MANAGER2850
30SALESMAN1400
30 1566.667
  2073.214
-- 

统计出如下图所示:



--

-- CUBE用法介绍

-- CUBE会在ROLLUP的基础上再进行纵向汇总。如下面的例子中,先按部门,职位分组统计各部门各职位的平均工资,然后再统计各部门和各职位的平均工资。

SELECT deptno,
       job,
       AVG(TO_NUMBER(sal))
  FROM emp
 GROUP BY CUBE(deptno,job);

结果如下:

  2073.214
 CLERK1037.5
 ANALYST3000
 MANAGER2758.333
 SALESMAN1400
 PRESIDENT5000
10 2916.667
10CLERK1300
10MANAGER2450
10PRESIDENT5000
20 2175
20CLERK950
20ANALYST3000
20MANAGER2975
30 1566.667
30CLERK950
30MANAGER2850
30SALESMAN1400

统计如下图所示:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值