欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

ORACLE GROUPING函數(shù)的使用

系統(tǒng) 1923 0

原文: http://blog.csdn.net/wh62592855/article/details/4818072

?

GROUPING函數(shù)可以接受一列,返回0或者1。如果列值為空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查詢中使用。當需要在返回空值的地方顯示某個值時,GROUPING()就非常有用。

?

關(guān)于ROLLUP和CUBE函數(shù)的使用,請參見我的另一篇文章。

http://blog.csdn.net/wh62592855/archive/2009/11/16/4817920.aspx

?

1、在ROLLUP中對單列使用GROUPING()

SQL> select division_id,sum(salary)
? ? from employees2
? ? group by rollup(division_id)
? ? order by division_id;

?

DIV SUM(SALARY)
--- -----------
BUS???? 1610000
OPE???? 1320000
SAL???? 4936000
SUP???? 1015000
??????? 8881000

加上GROUPING來看看

SQL> select grouping(division_id),division_id,sum(salary)
? ? from employees2
? ? group by rollup(division_id)
? ? order by division_id;

?

GROUPING(DIVISION_ID) DIV SUM(SALARY)
--------------------- --- -----------
??????????????????? 0 BUS???? 1610000
??????????????????? 0 OPE???? 1320000
??????????????????? 0 SAL???? 4936000
??????????????????? 0 SUP???? 1015000
??????????????????? 1???????? 8881000
可以看到,為空的地方返回1,非空的地方返回0。

?

2、使用CASE轉(zhuǎn)換GROUPING()的返回值

可能你會覺得前面的0和1太枯燥了,代表不了任何意義,說白了就是不夠人性化,呵呵。這個時候我們可以使用CASE來轉(zhuǎn)換為一些有意義的值。

SQL> select
? ? case grouping(division_id)
? ? when 1 then 'all divisions'
? ? else division_id
? ? end as div,
? ? sum(salary)
? ? from employees2
? ? group by rollup(division_id)
? ? order by division_id;

?

DIV?????????? SUM(SALARY)
------------- -----------
BUS?????????????? 1610000
OPE?????????????? 1320000
SAL?????????????? 4936000
SUP?????????????? 1015000
all divisions???? 8881000

?

3、使用CASE和GROUPING()轉(zhuǎn)換多個列的值

SQL> select
? ? case grouping(division_id)
? ? when 1 then 'all divisions'
? ? else division_id
? ? end as div,
? ? case grouping(job_id)
? ? when 1 then 'all jobs'
? ? else job_id
? ? end as job,
? ?sum(salary)
? ?from employees2
? ?group by rollup(division_id,job_id)
? ?order by division_id,job_id;

?

DIV?????????? JOB????? SUM(SALARY)
------------- -------- -----------
BUS?????????? MGR?????????? 530000
BUS?????????? PRE?????????? 800000
BUS?????????? WOR?????????? 280000
BUS?????????? all jobs???? 1610000
OPE?????????? ENG?????????? 245000
OPE?????????? MGR?????????? 805000
OPE?????????? WOR?????????? 270000
OPE?????????? all jobs???? 1320000
SAL?????????? MGR????????? 4446000
SAL?????????? WOR?????????? 490000
SAL?????????? all jobs???? 4936000

DIV?????????? JOB????? SUM(SALARY)
------------- -------- -----------
SUP?????????? MGR?????????? 465000
SUP?????????? TEC?????????? 115000
SUP?????????? WOR?????????? 435000
SUP?????????? all jobs???? 1015000
all divisions all jobs???? 8881000

16 rows selected.

?

4、CUBE與GROUPING()結(jié)合使用

SQL> select
? ? case grouping(division_id)
? ? when 1 then 'all divisions'
? ? else division_id
? ? end as div,
? ? case grouping(job_id)
? ? when 1 then 'all jobs'
? ? else job_id
? ? end as job,
? ?sum(salary)
? ?from employees2
? ?group by cube(division_id,job_id)
? ?order by division_id,job_id;

?

DIV?????????? JOB????? SUM(SALARY)
------------- -------- -----------
BUS?????????? MGR?????????? 530000
BUS?????????? PRE?????????? 800000
BUS?????????? WOR?????????? 280000
BUS?????????? all jobs???? 1610000
OPE?????????? ENG?????????? 245000
OPE?????????? MGR?????????? 805000
OPE?????????? WOR?????????? 270000
OPE?????????? all jobs???? 1320000
SAL?????????? MGR????????? 4446000
SAL?????????? WOR?????????? 490000
SAL?????????? all jobs???? 4936000

DIV?????????? JOB????? SUM(SALARY)
------------- -------- -----------
SUP?????????? MGR?????????? 465000
SUP?????????? TEC?????????? 115000
SUP?????????? WOR?????????? 435000
SUP?????????? all jobs???? 1015000
all divisions ENG?????????? 245000
all divisions MGR????????? 6246000
all divisions PRE?????????? 800000
all divisions TEC?????????? 115000
all divisions WOR????????? 1475000
all divisions all jobs???? 8881000

21 rows selected.

?

5、使用GROUPING SETS子句

使用GROUPING SETS子句可以只返回小計記錄。

SQL> select division_id,job_id,sum(salary)
? ? from employees2
? ? group by grouping sets(division_id,job_id)
? ? order by division_id,job_id;

?

DIV JOB SUM(SALARY)
--- --- -----------
BUS???????? 1610000
OPE???????? 1320000
SAL???????? 4936000
SUP???????? 1015000
??? ENG????? 245000
??? MGR???? 6246000
??? PRE????? 800000
??? TEC????? 115000
??? WOR???? 1475000

9 rows selected.

ORACLE GROUPING函數(shù)的使用


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国产精品一区二区久久 | 久久撸视频 | 亚洲国产精品成人 | 狠狠干天天 | 特级丰满少妇一级aaaa爱毛片 | 成人在线免费小视频 | 99精品视频在线这里只有 | 精品日本一区二区 | 美女久久 | 日韩av福利 | 日本在线看 | 超碰97青青草 | 亚洲色图欧美色 | 一区二区三区在线视频播放 | 国产日韩精品视频 | 日本高清成人 | 黄视频在线观看网站 | 人人艹逼| 欧美成人在线免费观看 | 欧洲精品久久久 | 中文字幕电影在线观看 | 欧美精品一区二区三区在线 | 国产一区久久 | 天天弄天天干 | 91大神精品长腿在线观看网站 | 国产精品无码2021在线观看 | 全黄裸片武则天一级第4季 亚洲一区国产 | 国产亚洲综合一区二区在线 | 偷拍第一页 | 成人午夜免费在线视频 | 欧美性成人 | 91看片免费版 | 一区二区三区视频在线观看 | 成人18免费观看的软件 | 久久99精品久久久久久 | 欧美三级免费看 | 国产精品极品美女在线观看免费 | 欧美精品18| 韩国美女一区二区 | 免费看黄色一级大片 | 国产精品福利短视在线播放频 |