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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

T-SQL中的GROUP BY GROUPING SETS

發布時間:2024/9/20 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 T-SQL中的GROUP BY GROUPING SETS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近遇到一個情況,需要在內網系統中出一個統計報表。需要根據不同條件使用多個group by語句.需要將所有聚合的數據進行UNION操作來完成不同維度的統計查看.

??? 直到發現在SQL SERVER 2008之后引入了GROUPING SETS這個對于GROUP BY的增強后,上面的需求實現起來就簡單多了,下面我用AdventureWork中的表作為DEMO來解釋一下GROUPING SETS.

??? 假設我現在需要兩個維度查詢我的銷售訂單,查詢T-SQL如下:

???

??? 而使用SQL SERVER 2008之后新增的GROUPING SETS語句,僅僅需要這樣寫:

???

???? 值得注意的是,雖然上面使用GROUPING SETS語句和多個GROUP BY語句產生的結果是完全一樣的,但順序卻完全不同。

GROUPING SETS,僅僅是語法糖?


??? 從上面結果來看,使用GROUPING SETS僅僅是一個可以少寫些代碼的語法糖.但實際情況是,GROUPING SETS在遇到多個條件時,聚合是一次性從數據庫中取出所有需要操作的數據,在內存中對數據庫進行聚合操作并生成結果。而UNION ALL是多次掃描表,將返回的結果進行UNION操作,這也就是為什么GROUPING SETS和UNION操作所返回的數據順序是不同的.

??? 下面通過查看上面兩個語句的IO和CPU來進行對比:

???

??? 通過上面的圖來看GROUPING SETS不僅僅只是語法糖.而是從執行原理上做出了改變.

??? 對于GROUPING SETS來說,還經常和GROUPING函數聯合使用,這個函數是反映目標列是否聚合,如何聚合則返回1,否則返回0,如下:

???

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的T-SQL中的GROUP BY GROUPING SETS的全部內容,希望文章能夠幫你解決所遇到的問題。

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