第八章 SQL高級處理 8-2 GROUPING運算符


一、同時得到合計行
合計行是不指定聚合鍵時得到的匯總結果。

UNION ALL與UNION的不同之處是它不會對結果進行排序,因此比UNION性能更好。
 
二、ROLLUP——同時得出合計和小計
GROUPING 運算符包含以下3種:
(1)ROLLUP
(2)CUBE
(3)GROUPING SETS
注:目前PostgreSQL和MySQL並不支持GROUPING運算符(MySQL僅支持ROLLUP)。
 
1、ROLLUP的使用方法

三、GROUPING函數——讓NULL更加容易分辨
為了避免混淆,SQL 供了一個用來判斷超級分組記錄的 NULL 的特定函數 —— GROUPING 函數。該函數在其參數列的值為超級分組記錄 所產生的 NULL 時返回 1,其他情況返回 0

在實際業務中,需要獲取包含合計或者小計的匯總結果(這種情況是最多的)時,就可以使用ROLLUP和GROUPING函數來實現了。
 
四、用數據來搭積木
所謂CUBE,就是將GROUP BY子句中聚合鍵的“所有可能組合”的匯總結果集中到一個結果中。
因此,組合的個數就是 2n(n 是聚合鍵的 個數)。2的n次方。
注:可以把CUBE理解為使用聚合鍵進行切割的模塊堆積成一個立方體。
 
五、GROUPING SETS——得到期望的積木
GROUPING SETS可以從ROLLUP和CUBE中取出部分記錄。
然而,由於期望獲得不固定結果的情況少之又少,因此與ROLLUP或者CUBE比起來,使用GROUPING SETS的機會也就很少了。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM