欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

rollup函數(shù)和cube函數(shù)的區(qū)別?

    有的小伙伴會(huì)發(fā)現(xiàn)在數(shù)據(jù)統(tǒng)計(jì)報(bào)表的時(shí)候會(huì)經(jīng)常在最后對(duì)列進(jìn)行一個(gè)匯總,那么在oracle中是那些函數(shù)來(lái)實(shí)現(xiàn)匯總的呢?今天就來(lái)講一下rollup函數(shù)和cube函數(shù)的區(qū)分。
首先,創(chuàng)建一張表tmp1,數(shù)據(jù)如下:

rollup函數(shù) 和cube函數(shù) 的區(qū)別?
那么,我們先看一下cube匯總出來(lái)的數(shù)據(jù)是什么樣子的吧?
select t_class,t_address,(t_number) t_number from tmp1 group by cube(t_class,t_address);
rollup函數(shù) 和cube函數(shù) 的區(qū)別?
有的小伙伴可能已經(jīng)發(fā)現(xiàn)了,cube函數(shù)匯總的數(shù)據(jù)相當(dāng)于把所有的可能性的數(shù)據(jù)匯總了出來(lái)。沒(méi)錯(cuò),其實(shí)這條sql語(yǔ)句相當(dāng)于以下的union all語(yǔ)句:
select null,null,sum(t_number) t_number from tmp1
union all
select null,t_address,sum(t_number) t_number from tmp1 group by t_address
union all
select t_class,null,sum(t_number) t_number from tmp1 group by t_class
union all
select t_class,t_address,sum(t_number) t_number from tmp1 group by t_class,t_address;

10年積累的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有潯陽(yáng)免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

那么,現(xiàn)在我們看一下rollup匯總出來(lái)的數(shù)據(jù)是什么樣子的吧?
select t_class,t_address,(t_number) t_number from tmp1 group by rollup(t_class,t_address);
rollup函數(shù) 和cube函數(shù) 的區(qū)別?
有的小伙伴可能已經(jīng)發(fā)現(xiàn)了,rollup函數(shù)匯總的數(shù)據(jù)也可以用union all語(yǔ)句來(lái)實(shí)現(xiàn):
select null,null,sum(t_number) t_number from tmp1
union all
select t_class,null,sum(t_number) t_number from tmp1 group by t_class
union all
select t_class,t_address,sum(t_number) t_number from tmp1 group by t_class,t_address;

    **總結(jié):**
    如果使用group by rollup(A,B,C),首先會(huì)對(duì)(A、B、C)進(jìn)行GROUP BY,然后對(duì)(A、B)進(jìn)行GROUP BY,然后是(A)進(jìn)行GROUP BY,最后對(duì)全表進(jìn)行GROUP BY操作。roll up的意思是“卷起”,這也可以幫助我們理解group by rollup就是對(duì)選擇的列從右到左以一次少一列的方式進(jìn)行g(shù)rouping直到所有列都去掉后的grouping(也就是全表grouping),對(duì)于n個(gè)參數(shù)的rollup,有n+1次的grouping。

cube的意思是立方,對(duì)cube的每個(gè)參數(shù),都可以理解為取值為參與grouping和不參與grouping兩個(gè)值的一個(gè)維度,然后所有維度取值組合的集合就是grouping的集合,對(duì)于n個(gè)參數(shù)的cube,有2^n次的grouping。如果使用group by cube(A,B,C),,則首先會(huì)對(duì)(A、B、C)進(jìn)行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后對(duì)全表進(jìn)行GROUP BY操作,一共是2^3=8次grouping。

另外,當(dāng)實(shí)際表中也存在null值時(shí),如何區(qū)分cube和rollup運(yùn)算符所生成的null值呢?這時(shí)我們可以用grouping函數(shù)來(lái)區(qū)分,這里我們就舉一個(gè)簡(jiǎn)單的例子來(lái)區(qū)分t_class列的null值,sql如下:
select t_class,t_address,(t_number) t_number,grouping(t_class) from tmp1

group by rollup(t_class,t_address);
rollup函數(shù) 和cube函數(shù) 的區(qū)別?
從圖中可以看到grouping(t_class)列中有0和1兩個(gè)數(shù)字,其中1表示由rollup運(yùn)算符造成的null值,其余null值為事實(shí)數(shù)據(jù)的空值。事實(shí)上grouping是一個(gè)聚合函數(shù),它產(chǎn)生了一個(gè)附加的列,當(dāng)用cube或rollup運(yùn)算符添加行時(shí),附加的列值為1;當(dāng)所添加的行不是由cube或rollup產(chǎn)生時(shí),附加列值為0.

希望對(duì)大家能有所幫助!

文章標(biāo)題:rollup函數(shù)和cube函數(shù)的區(qū)別?
URL地址:http://chinadenli.net/article34/jeiese.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣網(wǎng)站收錄、服務(wù)器托管域名注冊(cè)、虛擬主機(jī)小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
色婷婷在线视频免费播放| 日韩精品中文字幕亚洲| 亚洲熟女熟妇乱色一区| 丰满人妻熟妇乱又乱精品古代 | 91人妻人人揉人人澡人| 国产三级不卡在线观看视频| 日韩成人高清免费在线| 麻豆果冻传媒一二三区| 亚洲欧洲一区二区中文字幕| 亚洲欧美精品伊人久久| 亚洲欧美日韩国产自拍| 国产一区二区三区不卡| 国产欧美日韩在线精品一二区| 亚洲成人黄色一级大片| 国产精品伦一区二区三区四季| 日韩av生活片一区二区三区| 亚洲一区二区三区福利视频| 国产精品免费福利在线| 午夜福利直播在线视频| 福利专区 久久精品午夜| 亚洲欧洲在线一区二区三区| 免费一级欧美大片免费看| 免费观看日韩一级黄色大片| 日韩人妻少妇一区二区| 国产精品白丝久久av| 欧美日韩精品久久第一页 | 亚洲a码一区二区三区| 欧美精品激情视频一区| 午夜直播免费福利平台| 91精品国自产拍老熟女露脸| 深夜视频在线观看免费你懂| 人妻乱近亲奸中文字幕| 91亚洲人人在字幕国产 | 色好吊视频这里只有精| 99热九九热这里只有精品| 国产日韩中文视频一区| 在线精品首页中文字幕亚洲| 国产欧美一区二区另类精品| 日韩精品一区二区一牛| 欧美中文日韩一区久久| 国产精品久久久久久久久久久痴汉|