日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ORACLE ROLLUP CUBE

發布時間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。