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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

oracle group by 两项,Oracle中group by 的扩展函数rollup、cube、grouping sets

發布時間:2023/12/9 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle group by 两项,Oracle中group by 的扩展函数rollup、cube、grouping sets 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Oracle的group by除了基本使用方法以外,還有3種擴展使用方法,各自是rollup、cube、grouping sets。分別介紹例如以下:

1、rollup

對數據庫表emp。如果當中兩個字段名為a,b,c。

假設使用group by rollup(a,b),首先會對(a,b)進行group by ,然后對 a 進行 group by 。最后對全表進行 group by 操作。

例如以下查詢結果:

查詢語句

Select deptno,job,sum(sal) from?emp group by rollup(deptno,job);

等同于

Select deptno,job,sum(sal) from emp group by deptno,job

union all

Select deptno,null sum(sal) from emp group by deptno

union all

Select null,null,sum(sal) from emp (group by null )

2、cube

假設使用group by cube(a,b),,則首先會對(a,b)進行group by,然后依次是(a),(b),最后對全表進行group by 操作,一共是2^2=4次grouping

例如以下查詢結果。

查詢語句

Select deptno,job,sum(sal) from emp group by cube(deptno,job);

等同于

Select deptno,job,sum(sal) from emp group by deptno,job

union all

Select deptno,null sum(sal) from emp group by deptno

union all

Select null,job, sum(sal) from emp group by job

union all

Select null,null,sum(sal) from emp (group by null )

3、grouping sets

grouping sets就是對參數中的每一個參數做grouping。假設使用group by grouping sets(a,b)。則對(a),(b)進行group by

例如以下查詢結果:

查詢語句

Select deptno,job,sum(sal) from emp group by cube(deptno,job);

等同于

select null,job,sum(sal) from emp group by job

union all

select deptno,null,sum(sal) from emp group by deptno

4、grouping

使用grouping能夠推斷該行是數據庫中本來的行,還是有統計產生的行。grouping值為0時說明這個值是數據庫中本來的值。為1說明是統計的結果,參數僅僅有一個,并且必須為group by中出現的某一列

例如以下查詢結果:

查詢語句

select deptno,job,sum(sal),grouping(deptno) a,grouping(job) b?from emp group by rollup(deptno,job);

5、grouping_id

Grouping_id()的返回值事實上就是參數中的每列的grouping()值的二進制向量。假設grouping(a)=1,grouping(b)=1,則grouping_id(A,B)的返回值就是二進制的11。轉成10進制就是3。

參數能夠是多個,但必須為group by中出現的列。

查詢結果例如以下:

查詢語句

select deptno,job,sum(sal),grouping(deptno) a,grouping(job) b,grouping_id(deptno,job) from emp group by rollup(deptno,job);

6、group_id

GROUP_ID()唯一標識反復組,能夠通過group_id去除反復組

查詢結果例如以下:

查詢語句

select deptno,job,sum(sal),group_id() from emp group by?deptno,?rollup(deptno,job) having group_id()=0;

Oracle中group by 的擴展函數rollup、cube、grouping sets

標簽:net???rollup???oracle???jsb???from???產生???基本使用???log???font

本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴 本文系統來源:http://www.cnblogs.com/yxysuanfa/p/6830388.html

總結

以上是生活随笔為你收集整理的oracle group by 两项,Oracle中group by 的扩展函数rollup、cube、grouping sets的全部內容,希望文章能夠幫你解決所遇到的問題。

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