自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊SQL中的分組集

數(shù)據(jù)庫 MySQL
SQL Server的分組集共有三種 GROUPING SETS, CUBE, 以及ROLLUP, 其中 CUBE和ROLLUP可以當(dāng)做是GROUPING SETS的簡寫版。

[[421386]]

本文轉(zhuǎn)載自微信公眾號「SQL數(shù)據(jù)庫開發(fā)」,作者丶平凡世界  。轉(zhuǎn)載本文請聯(lián)系SQL數(shù)據(jù)庫開發(fā)公眾號。

分組集的定義

是多個分組的并集,用于在一個查詢中,按照不同的分組列對集合進(jìn)行聚合運(yùn)算,等價于對單個分組使用"UNION ALL",計(jì)算多個結(jié)果集的并集。

分組集種類

SQL Server的分組集共有三種 GROUPING SETS, CUBE, 以及ROLLUP, 其中 CUBE和ROLLUP可以當(dāng)做是GROUPING SETS的簡寫版

GROUPING SETS

GROUPING SETS子句允許你指定多個GROUP BY選項(xiàng)。增強(qiáng)了GROUP BY的功能。

可以通過一條SELECT語句實(shí)現(xiàn)復(fù)雜繁瑣的多條SELECT語句的查詢。并且更加的

高效,解析存儲一條SQL于語句

GROUP SETS示例

我們以Customers表為例,其內(nèi)容如下:

我們先分別對城市和省份進(jìn)行分組,統(tǒng)計(jì)出他們的數(shù)量

  1. SELECT 城市,NULL 省份,COUNT(城市) FROM Customers 
  2. GROUP BY 城市 
  3. UNION ALL 
  4. SELECT NULL,省份,COUNT(省份) FROM Customers 
  5. GROUP BY 省份 

結(jié)果為:

再使用GROUPING SETS來統(tǒng)計(jì)

  1. SELECT  
  2. 城市, 
  3. 省份, 
  4. COUNT(客戶ID) 數(shù)量  
  5. FROM Customers 
  6. GROUP BY GROUPING SETS (城市,省份) 

結(jié)果如下

其實(shí)上下兩個結(jié)果是一樣的,只是UNION ALL不排序,而GROUPING SETS增加了排序。這樣不僅減少了代碼,而且這樣的效率會比UNION ALL的效率高。通常GROUPING SETS使用在組合分析中。

ROLLUP

ROLLUP也是GROUPING SETS的一種簡略寫法,我們舉例說明。

我們先使用GROUPING SETS的多層組合

  1. SELECT  
  2. 省份, 
  3. 城市, 
  4. COUNT(1) 數(shù)量  
  5. FROM Customers 
  6. GROUP BY GROUPING SETS ( 
  7. 省份,(省份,城市) 

其結(jié)果為:

我們使用ROLLUP可以這樣寫

  1. SELECT  
  2. 省份, 
  3. 城市, 
  4. COUNT(客戶ID) 數(shù)量  
  5. FROM Customers 
  6. GROUP BY 省份,城市 WITH ROLLUP 

其結(jié)果為:

我們來解讀一下ROLLUP的作用,其作用是對每個列先進(jìn)行一次分組,并且對第一列的數(shù)據(jù)在每個組內(nèi)還進(jìn)行一次匯總,最后對所有的數(shù)據(jù)再進(jìn)行一次匯總,所以相比GROUPING SETS會多了個所以數(shù)據(jù)的匯總。這個在對組內(nèi)進(jìn)行聚合時是經(jīng)常使用到的。

CUBE

而CUBE相比ROLLUP就更多一個維度了,我們還是距離說明。

  1. SELECT  
  2. 省份, 
  3. 城市, 
  4. COUNT(客戶ID) 數(shù)量  
  5. FROM Customers 
  6. GROUP BY 省份,城市 WITH CUBE 

結(jié)果如下:

在ROLLUP的基礎(chǔ)上,還會將第一列每組的匯總數(shù)據(jù)額外顯示在最后。

總結(jié)

 

分組集類似于Excel的透視圖,可以對各類數(shù)據(jù)進(jìn)行組內(nèi)計(jì)算,這里不止可以進(jìn)行數(shù)量統(tǒng)計(jì),也可以進(jìn)行求和,最大最小值等操作。是我們在進(jìn)行數(shù)據(jù)分析時候經(jīng)常使用到的一組功能。

 

責(zé)任編輯:武曉燕 來源: SQL數(shù)據(jù)庫開發(fā)
相關(guān)推薦

2023-07-28 09:54:14

SQL數(shù)據(jù)Excel

2021-08-31 07:54:24

SQLDblink查詢

2023-08-29 09:46:12

SQLCTE遞歸

2021-11-09 06:55:03

SQLServer排序

2022-08-03 08:11:58

數(shù)據(jù)測試同類型

2021-08-16 08:12:04

SQLMerge用法

2022-10-17 08:22:28

2023-06-05 08:36:04

SQL函數(shù)RANK()

2023-10-26 08:38:43

SQL排名平分分區(qū)

2022-07-27 08:31:28

SQL開發(fā)控制

2021-11-17 08:11:35

MySQL

2024-04-26 00:00:00

Rust檢查器代碼

2023-11-09 11:56:28

MySQL死鎖

2010-09-28 10:02:16

SQL查詢

2021-11-10 18:52:42

SQL技巧優(yōu)化

2021-03-08 00:11:02

Spring注解開發(fā)

2022-05-11 09:01:54

Swift類型系統(tǒng)幻象類型

2021-10-30 19:56:10

Flutter按鈕 Buttons

2024-04-15 00:00:00

RabbitMQ死信隊(duì)列消息

2022-07-04 08:54:39

Swift處理器項(xiàng)目
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號