前面我們學習了Access數據庫中的數據合併、數據計算、數據分組、重複數據處理四大常用的數據處理方式。
數據處理的目的就是將採集到的的數據,用適當的處理方法整理加工,形成適合數據分析要求的樣式,也就是一維表,爲數據分析做好準備工作。
我們日常工作中所做的數據分析,主要指通過對比與細分進行現狀分析及原因分析,通過數據分組瞭解其數據構成,甚至通過不同時間維度的對比,查找數據變化的原因,最後通過製作相關圖標等對現狀進行呈現及描述。
接下來我們學習再Access數據庫中進行數據分析的方法,主要包含:
- 簡單統計
- 分組統計
- 交叉表統計
我們主要介紹SQL語句實現的方式。
一、簡單統計
常用的統計函數如下所示:
我們以“訂購明細表”爲例,統計訂單總數、訂購金額總額、平均訂單金額三個數據,SQL語句如下:
SELECT
Count(訂單編號) AS 訂單總數,
Sum(訂購金額) AS 訂購金額總額,
Avg(訂購金額) AS 平均訂單金額
FROM 訂購明細;
結果如下所示:
二、分組統計
我們在學習重複數據處理時用過GROUP BY子句,實現對數據按指定的分組字段進行分組的功能。
現在,我們同樣以“訂購明細表”,統計各個產品的訂單總數、訂購金額總額、平均訂單金額三個數據,SQL語句如下:
SELECT 產品,
Count(訂單編號) AS 訂單總數,
Sum(訂購金額) AS 訂購金額總額,
Avg(訂購金額) AS 平均訂單金額
FROM 訂購明細
GROUP BY 產品;
結果如下所示:
我們還想了解用戶訂購時段的分佈信息,而原有的“訂購明細表”只有“訂購日期”字段,需要取出時段信息,可採用FORMAT函數:
SELECT FORMAT(訂購日期,"h") AS 時段,
Count(訂單編號) AS 訂單數,
FROM 訂購明細
GROUP BY FORMAT(訂購日期,"h");
結果如下所示:
還是以“訂購明細表”爲例,我們需要了解不同年齡段的用戶訂購分佈情況,並且訂購用戶存在重複情況,需要去重。操作步驟如下:
- 先將“訂購明細表”與“用戶明細表”按關鍵字段“用戶ID”進行關聯查詢,並且可同時進行去重處理;
- 採用PARTITION函數法對用戶年齡分組;
- 把查詢結果作爲子查詢嵌套在分組統計查詢彙總。
SQL語句如下:
SELECT 年齡分組,Count(用戶ID) AS 用戶數
FROM
(SELECT DISTINCT A.用戶ID,PARTITION(B.年齡,1,100,5) AS 年齡分組
FROM 訂購明細 AS A, 用戶明細 AS B
WHERE A.用戶ID = B.用戶ID)
GROUP BY 年齡分組;
結果如下所示:
這裏需要說明的是:在Access數據庫中進行數據去重處理時,需要使用嵌套查詢,把數據去重結果作爲子查詢。
如果是需要了解各省份的訂單數分佈,無需先進行數據去重處理,那麼就無需使用嵌套查詢,SQL語句如下:
SELECT B.省份,Count(A.訂單編號) AS 訂單數
FROM 訂購明細 AS A,用戶明細 AS B
WHERE A.用戶ID = B.用戶ID
GROUP BY B.省份;
結果如下所示:
三、交叉表統計
1. 菜單操作法
交叉表統計需要藉助“簡單查詢”功能來實現。我們以“用戶明細表”爲例,統計不同省份、性別的用戶分佈情況。操作步驟如下:
- 單擊【創建】,單擊【查詢嚮導】按鈕;
- 在彈出的【新建查詢】對話框中,選擇【交叉表查詢嚮導】;
- 在彈出的【交叉表查詢嚮導】第一個對話框中,選擇【表】視圖,並在列表框中選擇“用戶明細”表作爲查詢對象;
- 在彈出的第二個對話框【可用字段】中,選擇“省份”作爲行標題;
- 在彈出的第三個對話框字段列中,選擇“性別”作爲標題;
- 在彈出的第四個對話框中,選擇“用戶ID”作爲每行和列交叉點的統計項,並在【函數】中,選擇“Count”函數,並保持默認勾選的【是,包括各行小計】項;
- 在第五個對話框中,輸入該查詢的名稱。
結果如下所示:
2. SQL語句法
單擊右下方的SQL按鈕,得到簡化後的SQL語句:
TRANSFORM Count(用戶ID) AS 用戶ID之計數
SELECT 省份, Count(用戶ID) AS 總計 用戶ID
FROM 用戶明細
GROUP BY 省份
PIVOT 性別;
我們發現,相比分組統計的SQL語句,在前後增加了TRANSFORM與PIVOT語句。
只要在分組統計SQL語句的基礎上,
- 前後增加TRANSFORM與PIVOT語句;
- 在TRANSFORM後面增加每個行與列交叉點統計函數及字段;
- 在PIVOT後面增加要作爲列標題的分組字段。