數據分析三大基本方法分別是:
- 對比
- 細分
- 預測
現在我們學習一下細分的方法:數據分組。
進行數據分析時不僅要對總體的數量特徵和數量關係記性分析,還要深入總體的內部進行分組分析。數據分組是一種重要的數據分析方法,這種方法根據數據分析對象的特徵,按照一定的標誌(指標),如業務、用戶屬性、時間等維度,把數據分析對象劃分爲不同的部分和類型來進行研究,以揭示其內在的聯繫和規律性。
常用的數據分組方式主要包括數值分組、日期/時間分組兩種。
一、數值分組
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,則函數CHOOSE返回的結果1;如果參數或表達式返回的值爲2,函數CHOOSE返回結果爲2,以此類推……
- 參數或表達式返回的值必須爲1~254的數字,如果小於1或者大於254,則Access數據庫將返回錯誤值“#VALUE”。
- 如果參數爲小數,則在使用前將被截尾取整,即相當於Excel中的INT函數效果。
仍然以“用戶明細表”爲例,對用戶年齡進行分組,下面採用CHOOSE函數進行分組,編寫的SQL語句如下:
SELECT 用戶ID,年齡,
CHOOSE((年齡-1)/10+1,"10歲及其以下","11-20歲","21-30歲","31-40歲","40歲以上") AS 年齡分組
FROM 用戶明細;
表達式爲何爲“(年齡-1)/10+1”?
- 假設年齡範圍是1~10歲,那麼“(年齡-1)/10”返回的值就落入[0,1]區間,而“(年齡-1)/10+1”返回的值就落入[1,2]區間;
- 根據CHOOSE函數語法介紹,“如果參數爲小數,則在使用前將被截尾取整",那麼參數最終返回值爲1,也就對應第一個結果”10歲及其以下";
- 依次類推,就可把用戶年齡劃分爲不同的範圍,從而保證各個用戶年齡都能落入正確的區間。
3. SWITCH函數
SWITCH函數語法如下:
SWITCH(條件1,結果1,條件2,結果2,……,條件N,結果N)
說明:
- 如果條件1爲TRUE,SWITCH將返回結果1,如果條件2爲TRUE,SWITCH將返回結果2,以此類推……
- 參數由成對的條件表達式和結果值組成,條件表達式按照從左到右的順序求值,將返回與第一個求值結果爲TRUE的表達式相對應的結果值;
- SWITCH函數在SQL語句中的條件表達式最多可以達到14個,如果多於14個表達式,將提示錯誤;
- 如果所有表達式的結果值都不爲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(數值參數,開始值,結束值,組距)
說明:
- 數值參數爲要根據範圍進行計算的整數;
- 開始值必須爲整數,並且不能小於0;
- 結束值也必須爲整數,該數值不能等於或小於開始值;
- 組距也必須爲整數,指定在整個數值範圍內(在開始值與結束值之間)的分區大小;
- 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") AS 秒
FROM 訂購明細;
將編寫好的SQL語句直接複製至一個新建的查詢SQL視圖窗口中,單擊【運行】按鈕,得到的結果如下圖: