欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

ORACLE ROLLUP CUBE

发布时间:2023/12/15 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ORACLE 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操作。

如下SQL

select t.*, t.rowid from group_test t;

MANAGER 20 2975 AAAQMEAAEAAEGk/AAA
SALESMAN 30 1250 AAAQMEAAEAAEGk/AAB
MANAGER 30 2850 AAAQMEAAEAAEGk/AAC
MANAGER 10 2450 AAAQMEAAEAAEGk/AAD
ANALYST 20 3000 AAAQMEAAEAAEGk/AAE
PRESIDENT 10 5000 AAAQMEAAEAAEGk/AAF
SALESMAN 30 1500 AAAQMEAAEAAEGk/AAG
CLERK 20 1100 AAAQMEAAEAAEGk/AAH
CLERK 30 950 AAAQMEAAEAAEGk/AAI
ANALYST 20 3000 AAAQMEAAEAAEGk/AAJ
CLERK 10 1300 AAAQMEAAEAAEGk/AAK
CLERK 20 800 AAAQMEAAEAAEGlAAAA
SALESMAN 30 1600 AAAQMEAAEAAEGlAAAB
SALESMAN 30 1250 AAAQMEAAEAAEGlAAAC

select job, deptno, sum(sal) total_sal
  from group_test
 group by rollup(job, deptno);

JOB       DEPTNO      TOTAL_SAL
CLERK    10             1300
CLERK    20             1900
CLERK    30             950
CLERK                    4150
ANALYST 20           6000
ANALYST                6000
MANAGER 10          2450
MANAGER 20          2975
MANAGER 30          2850
MANAGER               8275
SALESMAN 30         5600
SALESMAN              5600
PRESIDENT 10         5000
PRESIDENT              5000
                             29025

 select job, deptno, sum(sal) total_sal
  from group_test
 group by cube(job, deptno);

JOBDEPTNOTOTAL_SAL
  29025
 108750
 2010875
 309400
CLERK 4150
CLERK101300
CLERK201900
CLERK30950
ANALYST 6000
ANALYST206000
MANAGER 8275
MANAGER102450
MANAGER202975
MANAGER302850
SALESMAN 5600
SALESMAN305600
PRESIDENT 5000
PRESIDENT105000

select decode(grouping_id(job, deptno), 1, '合计', job || deptno) as group_col,
       sum(sal) total_sal
  from group_test
 group by rollup(job, deptno);

GROUP_COLTOTAL_SAL
CLERK101300
CLERK201900
CLERK30950
合计4150
ANALYST206000
合计6000
MANAGER102450
MANAGER202975
MANAGER302850
合计8275
SALESMAN305600
合计5600
PRESIDENT105000
合计5000
 29025

总结

以上是生活随笔为你收集整理的ORACLE ROLLUP CUBE的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。