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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql支持cube_mysql聚合函数rollup和cube

發布時間:2023/12/20 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql支持cube_mysql聚合函数rollup和cube 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、with rollup:

with rollup通常和group by語句一起使用,是根據維度在分組的結果集中進行聚合操作。——對group by的分組進行匯總。

假設用戶需要對N個緯度進行聚合查詢操作,普通的groupby語句需要N個查詢和N次group by操作。而rollup的有點是一次可以去的N次groupby的結果,這樣可以提高查詢效率,同時大大減少網絡的傳輸流量。

1、rollup演示:

1)創建表:

createtablerollup(

orderidintnotnull,

orderdatedatenotnull,

empidintnotnull,

custidvarchar(10)notnull,

qtyintnotnull,

primary key(orderid,orderdate));

2)插入數據:

insertintorollupselect1,\'2010-01-02\',3,\'A\',10;

insertintorollupselect2,\'2010-04-02\',2,\'B\',20;

insertintorollupselect3,\'2010-05-02\',1,\'A\',30;

insertintorollupselect4,\'2010-07-02\',3,\'D\',40;

insertintorollupselect5,\'2011-01-02\',4,\'A\',20;

insertintorollupselect6,\'2011-01-02\',3,\'B\',30;

insertintorollupselect7,\'2011-01-02\',1,\'C\',40;

insertintorollupselect8,\'2009-01-02\',2,\'A\',10;

insertintorollupselect9,\'2009-01-02\',3,\'B\',20;

3)首先按照年份分組、統計銷量;然后在對年份這一個緯度進行聚合

selectyear(orderdate)year,sum(qty)sumfromrollupgroup by yere(orderdate);

然后對年份進行聚合:

selectyear(orderdate)year,sum(qty)sumfromrollup

group by yere(orderdate)with rollup;

和普通的groupby差別不大,只是多了一個(null,220),表示對所有的year再做一次聚合,即訂單數量總和。對單個唯獨進行rollip操作只是可以在最后得到聚合的數據,對比groupby語句并沒有非常大的優勢。

4)對多個緯度進行聚合:

selectempid,custid,year(orderdate)year,sum(qty)sumfromrollup

group by empid,custid,year(orderdate)

with rollup;

對三次分組都進行了聚合,一個有三種聚合,其中:

(null,null,null)表示最后的聚合

(empid,null,null)表示僅對(empid)一列進行分組的聚合結果

(empid,custid,null)表示對(empid,custid)兩列進行分組的聚合結果

(empid,custid,year)表示對這3列進行分組的聚合結果——也就是group by本身聚集

所以,上面結果等價于:(未排序)

selectempid,custid,year(orderdate)year,sum(qty)sumfromrollup

group by empid,custid,year(orderdate)

union

selectempid,custid,null,sum(qty)sumfromrollup

group by empid,custid

union

selectempid,null,null,sum(qty)sumfromrollup

group by empid

union

selectnull,null,null,sum(qty)sumfromrollup

2、rollup注意:

1)ORDER BY不能在rollup中使用,兩者為互斥關鍵字;

2)如果分組的列包含NULL值,那么rollup的結果可能不正確,因為在rollup中進行的分組統計時,null具有特殊意義。因此在進行rollup時可以先將

null轉換成一個不可能存在的值,或者沒有特別含義的值,比如:IFNULL(xxx,0)

3)mysql中沒有像oracle那樣的grouping()函數;

【實例】

selectifnull(dept,'總計') as '部門',ifnull(phone,'小計') as '電話',sum(money) as '金額' fromgroupTable group by

dept,phone with rollup;

+--------+------+------+

|部門|電話| 金額|

+--------+------+------+

|財務部| 6001 |?? 10 |

|財務部| 6003 |? 100 |

|財務部|小計|? 110 |

|營業部| 8001 |?? 20 |

|營業部| 8002 |?? 30 |

|營業部|小計|?? 50 |

|總計|小計|? 160 |

+--------+------+------+

二、cube:

rollup是cube的一種特殊情況,和rollup一樣,cube也是一種對數據的聚合操作。但是rollup只在層次上對數據進行聚合,而cube對所有的維度進行聚合。具有N個維度的列,cube需要2的N次方次分組操作,而rollup只需要N次分組操作。

在mysql5.6.17版本中,只定義了cube,但是不支持cube操作。

2、rollup和cube的區別:

1)假設有n個維度,rollup會有n個聚合:

rollup(a,b)?? 統計列包含:(a,b)、(a)、()

rollup(a,b,c)統計列包含:(a,b,c)、(a,b)、(a)、()

……以此類推ing……

2)假設有n個緯度,cube會有2的n次方個聚合

cube(a,b)???? 統計列包含:(a,b)、(a)、(b)、()

cube(a,b,c)??統計列包含:(a,b,c)、(a,b)、(a,c)、(b,c)、(a)、(b)、(c)、()

……以此類推ing……

3、可以用rollup來模擬cube:

select

empid,custid,year(orderdate)year,sum(qty)sumfromrollup

group by empid,custid,year(orderdate)

with rollup

union

select

empid,custid,year(orderdate)year,sum(qty)sumfromrollup

group by empid,year(orderdate),custid

with rollup

union

select

empid,custid,year(orderdate)year,sum(qty)sumfromrollup

group by custid,year(orderdate),empid

with rollup

union

select

empid,custid,year(orderdate)year,sum(qty)sumfromrollup

group by custid,empid,year(orderdate)

with rollup

union

select

empid,custid,year(orderdate)year,sum(qty)sumfromrollup

group byyear(orderdate),empid,custid

with rollup

union

select

empid,custid,year(orderdate)year,sum(qty)sumfromrollup

group byyear(orderdate),empid,custid

with rollup;

總結

以上是生活随笔為你收集整理的mysql支持cube_mysql聚合函数rollup和cube的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 色图av | av爱爱爱| 日本成人午夜视频 | 色久综合网 | 色小说在线观看 | 黄色在线观看av | 国产精品第157页 | 亚洲天堂日本 | 中文在线永久免费观看 | 国产少妇在线 | 成人免费一级视频 | 久久人人爽人人爽人人片av免费 | 妇女一级片| 日本国产中文字幕 | 亚洲天堂系列 | 国产亚洲精品成人av久久ww | 色婷婷av一区二区三区gif | 日本高清免费观看 | 成人黄色网址在线观看 | www.欧美亚洲 | www.日韩 | 国产白丝一区二区三区 | 无码人妻一区二区三区av | 国产午夜精品福利视频 | 国产福利视频在线 | 精品成人免费一区二区在线播放 | 屁屁影院一区二区三区 | 午夜毛片电影 | 黄网站色| 一级在线视频 | 亚洲精品无码成人 | 好色综合 | 日本特级毛片 | 少妇一级淫片免费播放 | 翔田千里88av中文字幕 | 久久久少妇 | 久久久视屏 | 伊人开心网 | 国产精品野外户外 | 亚洲视频精品 | 亚洲视频 中文字幕 | 欧美理论片在线观看 | av小说天堂网 | 激情福利社| 久久久无码精品亚洲无少妇 | 国产亚洲视频在线 | 成人三级图片 | 91欧美日韩 | 爱爱网站免费 | 操你啦影院 | 日本福利视频一区 | 手机看片1024久久 | 国产在线精品视频 | 欧美12--15处交性娇小 | 最新av免费在线观看 | 天堂在线视频网站 | www.激情五月 | 新呦u视频一区二区 | 在线天堂中文在线资源网 | 亚洲第一香蕉网 | 欧美视频在线观看一区二区三区 | 日韩一区二区影视 | av看片网站 | 成人二区三区 | 美女主播在线观看 | 久久久亚洲国产精品 | 91在线公开视频 | 一区二区三区四区不卡 | 在线播放www | 日韩一级片网站 | 欧美sm凌虐视频网站 | 尤物视频在线观看国产性感 | 欧美我不卡 | 国产天堂网 | 少妇黄色片 | 免费的性爱视频 | 日韩毛片视频 | 亚洲欧美综合一区二区 | 操少妇视频 | 干综合网 | 伊人久久天堂 | 日本一区二区成人 | 19禁大尺度做爰无遮挡电影 | 99久久婷婷国产综合精品电影 | 日韩激情国产 | 中文字幕丝袜 | 欧美日韩一区二区综合 | xxxxxxxx黄色片 | √天堂资源地址在线官网 | 91干 | 毛片高清 | 伊人久久一区二区 | 亚洲五月激情 | 日韩成人在线网站 | 综合色在线视频 | 成人免费性视频 | 国产二区电影 | 久国产精品 | 免费在线不卡av |