Access操作與SQL語句:數據分組

數據分析三大基本方法分別是:

  • 對比
  • 細分
  • 預測

現在我們學習一下細分的方法:數據分組。
進行數據分析時不僅要對總體的數量特徵和數量關係記性分析,還要深入總體的內部進行分組分析。數據分組是一種重要的數據分析方法,這種方法根據數據分析對象的特徵,按照一定的標誌(指標),如業務、用戶屬性、時間等維度,把數據分析對象劃分爲不同的部分和類型來進行研究,以揭示其內在的聯繫和規律性。
常用的數據分組方式主要包括數值分組、日期/時間分組兩種。

一、數值分組

1. IIF函數法

在Access中,IIF函數最多可進行13成嵌套,如果嵌套超過13層,運行時Access數據庫將提示“表達式過於複雜”。
IIF函數語法如下:

IIF(表達式,表達式成立時返回的值,表達式不成立時返回的值)

以“用戶明細”表爲例。表中有個“年齡”字段,我們需要了解用戶年齡結構,這是就需要對用戶年齡進行分組。以IIF函數進行分組,編寫的SQL語句如下:

SELECT 用戶ID,年齡,
IIF(年齡 <= 20,"20歲及其以下",
IIF(年齡 <=30,"21-30歲",
IIF(年齡 <= 40,"31-40歲",
"40歲以上"))) AS 年齡分組
FROM 用戶明細;

將編寫好的SQL語句複製到新建的查詢SQL視圖窗口中,單擊【運行】,得到如下結果:
在這裏插入圖片描述

2. CHOOSE函數

與Excel中的CHOOSE函數用法與功能一樣。語法如下:

CHOOSE(參數,結果1,結果2,……,結果N)

說明:

  1. 參數可爲數字或表達式,如果參數或表達式返回的值是1,則函數CHOOSE返回的結果1;如果參數或表達式返回的值爲2,函數CHOOSE返回結果爲2,以此類推……
  2. 參數或表達式返回的值必須爲1~254的數字,如果小於1或者大於254,則Access數據庫將返回錯誤值“#VALUE”。
  3. 如果參數爲小數,則在使用前將被截尾取整,即相當於Excel中的INT函數效果。

仍然以“用戶明細表”爲例,對用戶年齡進行分組,下面採用CHOOSE函數進行分組,編寫的SQL語句如下:

SELECT 用戶ID,年齡,
CHOOSE((年齡-1)/10+1,"10歲及其以下","11-20歲","21-30歲","31-40歲","40歲以上") AS 年齡分組
FROM 用戶明細;

表達式爲何爲“(年齡-1)/10+1”?

  1. 假設年齡範圍是1~10歲,那麼“(年齡-1)/10”返回的值就落入[0,1]區間,而“(年齡-1)/10+1”返回的值就落入[1,2]區間;
  2. 根據CHOOSE函數語法介紹,“如果參數爲小數,則在使用前將被截尾取整",那麼參數最終返回值爲1,也就對應第一個結果”10歲及其以下";
  3. 依次類推,就可把用戶年齡劃分爲不同的範圍,從而保證各個用戶年齡都能落入正確的區間。

3. SWITCH函數

SWITCH函數語法如下:

SWITCH(條件1,結果1,條件2,結果2,……,條件N,結果N)

說明:

  1. 如果條件1爲TRUE,SWITCH將返回結果1,如果條件2爲TRUE,SWITCH將返回結果2,以此類推……
  2. 參數由成對的條件表達式和結果值組成,條件表達式按照從左到右的順序求值,將返回與第一個求值結果爲TRUE的表達式相對應的結果值;
  3. SWITCH函數在SQL語句中的條件表達式最多可以達到14個,如果多於14個表達式,將提示錯誤;
  4. 如果所有表達式的結果值都不爲TRUE,SWITCH將返回NULL。

仍然以“用戶明細表”爲例,對用戶年齡分組,採用SWITCH函數進行分組,SQL語句如下:

SELECT 用戶ID,年齡,
SWITCH(年齡 <= 20,"20歲及以下",
      年齡 <= 30,"21-30歲",
      年齡 <= 40,"31-40歲",
      年齡 > 40,"40歲以上") AS 年齡分組
FROM 用戶明細;

SWITCH函數分組與IIF函數分組效果一樣,但其條件與結果寫在一起,讓人感覺分組更清晰。

4. PARTITION函數

PARTITION函數的語法如下:

PARTITION(數值參數,開始值,結束值,組距)

說明:

  1. 數值參數爲要根據範圍進行計算的整數;
  2. 開始值必須爲整數,並且不能小於0;
  3. 結束值也必須爲整數,該數值不能等於或小於開始值;
  4. 組距也必須爲整數,指定在整個數值範圍內(在開始值與結束值之間)的分區大小;
  5. PARTITION返回的內容爲每組的“下限:上限”。
    仍然以“用戶明細表”爲例,對用戶年齡分組,採用PARTITION函數進行分組,SQL語句如下:
SELECT 用戶ID,年齡,
PARTITION(年齡,1,100,20) AS 年齡分組
FROM 用戶明細;

在這裏插入圖片描述

5. 四個分組函數的比較

如果要進行數值等距分組,可以考慮使用PARTITION或CHOOSE函數;如果要進行數值不等距分組,可考慮使用SWITCH或IIF函數。
在這裏插入圖片描述

二、日期/時間分組

在Access數據庫中,除了可以採用YEAR、MONTH、DAY等常用日期函數(如之前的所示)來進行日期分組外,還可以採用FORMAT函數進行日期/時間分組。FORMAT函數可對文本、數值、日期/時間等類型數據按指定要求進行格式化,我們主要介紹FORMAT函數的日期/時間格式化功能。
FORMAT函數的語法如下:

FORMAT(日期/時間,日期/時間格式參數)

FORMAT函數中日期/時間相關的格式參數說明如下圖所示:
在這裏插入圖片描述
我們以“訂購明細”表爲例,對用戶訂購日期依次按年、季、月、日、星期、小時、分、秒等8個日期/時間單位進行格式化分組。下面採用FORMAT函數進行分組,SQL語句如下:

SELECT 訂單編號,訂購日期,
FORMAT(訂購日期,"yyyy") AS,
FORMAT(訂購日期,"q") AS 季度,
FORMAT(訂購日期,"m") AS 月份,
FORMAT(訂購日期,"d") AS,
FORMAT(訂購日期,"dddd") AS 星期,
FORMAT(訂購日期,"h") AS 小時,
FORMAT(訂購日期,"n") AS,
FORMAT(訂購日期,"s") ASFROM 訂購明細;

將編寫好的SQL語句直接複製至一個新建的查詢SQL視圖窗口中,單擊【運行】按鈕,得到的結果如下圖:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章