1. 程式人生 > >第1章 高效處理千萬資料

第1章 高效處理千萬資料

  • 1.1 最容易上手的資料庫
    • 1.1.1 資料庫那些事兒
      資料分析主要有三大作用:現狀分析-告訴我們過去發生了什麼;原因分析-告訴我們為什麼會發生;預測分析-告訴我們將來會發生什麼。
      • Access資料庫
      • 優勢與不足:
        • (1)操作介面友好,易於操作
        • (2)Access查詢處理可直接生成相應的SQL語句
    • 1.1.2 萬能的SQL
      • 基本語法
        SELECT 姓名,性別,年齡,身高,婚姻狀況,教育背景,月收入,是否有房,是否有車,備註
        FROM 會員表
        WHERE 性別='男'
        AND 年齡 BETWEEN(26,30)
        AND 身高 BETWEEN(170,180)
        AND 婚姻狀況 = '未婚'
        AND 教育背景 IN('本科','研究生'​)
        AND 月收入 >= 8000
        AND 是否有房='是'
        AND 是否有車='是'
        AND 備註 IN ('細心','大方','浪漫')
        ORDER BY 月收入 DESC;​​​​​​​​​​​
    • 1.1.3 兩招匯入資料
      • 直接匯入法
      • 建立連結法
    • 1.1.4 資料合併
      • 橫向合併
        • 內連線
        • 左連線
        • 右連線
      • 縱向合併
        • (1)選單操作法
        • (2)UNION ALL-使用SQL語句
    • 1.1.5 快速實現資料計算
      • 簡單計算
        • 簡單計算就是加減乘除等簡單算術計算
      • 函式計算
        • DATEDIFF函式:通過日期函式計算得到使用者註冊的天數
        • Year()
        • Month()
        • Abs()
        • Int()
        • Round()
        • Len()
    • 1.1.6 資料分組
      • 數值分組
        • (1)IIF函式法
          SELECT 使用者ID,年齡,
          IIF(年齡<=20,"20歲及其以下",
          IIF(年齡<=30,"30歲及其以下",
          IIF(年齡<=40,"31-40歲",
          "40歲以上"))) AS 年齡分組
          FROM 使用者明細;
        • (2)CHOOSE函式法
          SELECT 使用者ID,年齡,
          CHOOSE((年齡-1)/10+1,"10歲及其以下","11-20歲","21-30歲","31-40歲","40歲以上") AS 
          年齡分組
          FROM 使用者明細;
        • (3)SWITCH函式法
          SELECT 使用者ID,年齡
          SWITCH(年齡<=20,"20歲及其以下",
          年齡<=30,"21-30歲",
          年齡<=40,"31-40歲",
          年齡>40,"40歲以上") AS 年齡分組
          FROM 使用者明細;
        • (4)PARTITION函式法
          SELECT 使用者ID,年齡,
          PARTITION(年齡,1,100,20) AS 年齡分組
          FROM 使用者明細;​
      • 日期時間分組
        FORMAT (日期/時間, 日期/時間格式引數)
    • 1.1.7 重複資料處理
      • 重複項查詢
        (1)選單操作法
        Access資料庫-查詢-查詢嚮導-查詢重複項查詢嚮導

        (2)SQL查詢法
        ​​​SELECT First(訂購明細.[使用者ID]) AS [使用者ID 欄位], Count(訂購明細.[使用者ID]) AS NumberOfDups
        FROM 訂購明細
        GROUP BY 訂購明細.[使用者ID]
        HAVING (((Count(訂購明細.[使用者ID]))>1));
      • 不重複項查詢
        (1)Having Count(使用者ID)=1
        ​SELECT First(訂購明細.[使用者ID]) AS [使用者ID 欄位], Count(訂購明細.[使用者ID]) AS NumberOfDups
        FROM 訂購明細
        GROUP BY 訂購明細.[使用者ID]
        HAVING (((Count(訂購明細.[使用者ID]))=1));​
      • 資料去重查詢
        (1)GROUP BY子句
        SELECT 使用者ID
        FROM 訂購明細
        GROUP BY使用者ID;
        ​​​​
        (2)DISTINCT​
        SELECT DISTINCT 使用者ID
        FROM 訂購明細;​
    • 1.1.8 資料分析一步到位
      • 簡單統計
        • 重複資料處理時東東啊一個計數函式Count
          SELECT
          Count(訂單編號) AS 訂單總數,
          Sum(訂購金額) AS 訂購金額總和,
          Avg(訂購金額) AS 平均訂單金額
          FROM 訂購明細;
      • 分組統計
        (1)SELECT 產品,
        Count(訂單編號) AS 訂單總數,
        Sum(訂購金額) AS 訂購金額總和,
        Avg(訂購金額) AS 平均訂單金額
        FROM 訂購明細
        GROUP BY 產品;

        (2)使用者訂購時段分佈資訊
        SELECT FORMAT(訂購日期,"h")AS 時段,
        Count(訂單編號) AS 訂單數
        FROM 訂購明細
        GROUP BY FORMAT(訂購日期,"h");

        ​​​​(3)分組去重關聯巢狀查詢
        我們需要了解不同年齡段的使用者訂購分佈情況,原有“訂購明細”表中沒有使用者年齡資訊,並且訂購使用者存在重複情況,需要去重。
        SELECT 年齡分組,Count(使用者ID) AS 使用者數
        FROM 
        (SELECT DISTINCT A.使用者ID, PARTITION(B.年齡,1,100,5) AS 年齡分組
        FROM 訂購明細 A, 使用者明細 B
        WHERE A.使用者ID = B.使用者ID)
        GROUP BY 年齡分組;

        (4)瞭解各省的訂單數分佈:
        SELECT B.省份, Count(A.訂單編號) AS 訂單數
        FROM 訂購明細 A,使用者明細 B
        WHERE A.使用者ID = B.使用者ID
        GROUP BY B.省份;​​
      • 交叉表統計
        統計不同省份、性別的使用者分佈情況
        • (1)ACCESS:建立-查詢嚮導-交叉表查詢嚮導-選擇行標題-選擇列標題-選擇交叉點統計項-選擇Count函式
        • (2)SQL交叉表查詢
          SQL交叉表語句:
          TRANSFORM Count(使用者明細.[使用者ID]) AS 使用者ID之計數
          SELECT 使用者明細.[省份], Count(使用者明細.[使用者ID]) AS [總計 使用者ID]
          FROM 使用者明細
          GROUP BY 使用者明細.[省份]
          PIVOT 使用者明細.[性別];
          --只要在分組統計SQL語句基礎上,前後增加TRANSFORM與PIVOT語句,並且在TRANSFORM後面增加每個行和列的交叉點統計函式及欄位,在PIVOT後面增加要作為列標題的分組欄位即可。
  • 1.2 Microsoft Query
    使用Microsoft Query工具進行資料處理與分析,需要以下四步:
    1.建立資料來源以連線資料
    2.使用“查詢嚮導"選擇所需要的資料
    3.在查詢操作介面進行相應的SQL查詢操作
    4.將資料結果返回到EXCEL中​​​
    • 1.2.1資料匯入
      • 建立資料來源連線資料
      • 使用“查詢嚮導”選擇資料
    • 1.2.2資料處理
      資料合併、資料計算、資料分組、資料去重等其他的SQL語句資料處理方式,均與Access資料庫中的基本一致。
    • 1.2.3資料分析
      • SQL語句分析法
      • 資料透視表法
        把處理好的資料作為資料透視表的資料來源。資料透視表結果可以更加靈活、方便地以交叉表方式顯示。
        果然如此,這一招真實用。​
  • 1.3本章小結
    • 瞭解資料庫的作用,並熟悉Access資料庫,瞭解其優勢與不足。
    • 瞭解SQL語句在資料處理與分析中的作用,並學習了其基本語法。
    • 學習Access資料庫中資料匯入、資料合併、資料計算、資料分組、資料重複處理,以及資料分析的選單操作與SQL語句實現方式。
    • 瞭解Microsoft Query工具的作用,及其與Access資料庫相似及不同之處。
    • 學習Microsoft Query工具的匯入、資料處理,以及資料分析實現的方式。