1. 程式人生 > >第1章 高效處理千萬數據

第1章 高效處理千萬數據

研究 連接數 ldr if函數 有用 返回 金額 生成 內連接

  • 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工具的導入、數據處理,以及數據分析實現的方式。

第1章 高效處理千萬數據