[數據分析#33] SQL 累積加總:2 個寫法 (附資料集)

什麼情境下會需要用到 SQL 累積加總?

資料庫儲存的資料通常都是今天的業績多少,因此如果我們正在追一個年底要達到多少的目標的時候,以累積加總的形式顯示離目標還有多遠,就是一個很重要的使用場景

累積加總怎麼寫?2 種 SQL 寫法舉例

請大家先 copy 一份出來:Google sheet 範例資料集,裡面會包含

  • 範例資料集
  • 2 種 SQL 寫法的結果

需要具備的 SQL 技能?

這兩篇看完之後,待會分享的 2 種寫法都能掌握!

範例資料集介紹:daily_sales

  • daily_sales 這份資料集,包含
    • 日期 (grass_date):2022/1/1~2022/1/31 的資料
    • 銷售訂單數量 (order fraction)

寫法一:簡單累積加總

  • 問題:今天我們想要知道每天的訂單累積加總 (第一天顯是第一天的訂單,第二天顯示第一天和第二天的訂單)
  • 解決方法:需要用到視窗函數,sum(order_fraction) over (order by grass_date)
    • 不需要用 PARTITION BY 做分群
    • 只需要用到 ORDER BY:只需要 ORDER BY 日期,並且往回推做加總,假設是 2022/1/2,就會回推將 2022/1/1 & 2022/1/2 的業績以 SUM() 加總起來
SELECT GRASS_DATE
, ORDER_FRACTION -- 當天的業績
, SUM(ORDER_FRACTION) OVER (ORDER BY GRASS_DATE) ACCUMULATIVE_ORDERS --累積業績
FROM DAILY_SALES

範例資料集介紹:buyer_sales

  • buyer_sales 這份資料集,包含
    • 日期 (grass_date):2022/1/1~2022/1/31 的資料
    • 顧客編號 (buyer_id)
    • 銷售訂單數量 (order fraction)

第二種寫法

  • 問題:今天我們想要知道每個買家、每天的訂單累積加總 ( A 買家:第一天顯是 A 第一天的訂單,第二天顯示 A 第一天和第二天的訂單)
  • 解決方法:需要用到視窗函數,sum(order_fraction) over (PARTITION BY buyer_id ORDER BY grass_date) AS buyer_daily_accumulative_orders
    • PARTITION BY:做分群,以每個買家為一個群體做接下來的加總處理
    • ORDER BY:只需要 ORDER BY 日期,並且往回推做加總,假設是 2022/1/2,就會回推將 2022/1/1 & 2022/1/2 的業績以 SUM() 加總起來
SELECT BUYER_ID
, GRASS_DATE
, ORDER_FRACTION -- 每個買家每天的業績
, SUM(ORDER_FRACTION) OVER (PARTITION BY BUYER_ID ORDER BY GRASS_DATE) AS BUYER_DAILY_ACCUMULATIVE_ORDERS --每個買家加總業績
FROM BUYER_SALES
ORDER BY 1,2

總結

  • 累積加總可以用視窗函數跟 SUM ( ) 函數,簡單的處理
  • 記得copy 一份:Google sheet 範例資料集,看一下範例資料集跟寫法的 output 結果!

如何練習 SQL 函數?

  1. 使用 Google BigQuery 沙盒功能
  2. 匯入 Google Sheet 裡的資料集,之前有寫過一篇教學,如果不會的話可以看這裡:Google BigQuery 教學:3 分鐘完成資料匯入跟 SQL 查詢
  3. 練習上面的所有寫法,output 出結果!

更多學習資源推薦

如何使用這個網站?我的數據分析文章導覽!裡面也會分享更多實用 SQL 教學:本站數據分析文章導覽 及 更多 SQL 實用文章教學

【1 對 1 免費諮詢】數據分析師 0~1 培訓班陪你一路到轉職成功!

hi 我是 Lisa

你也是 0 經驗、沒有相關背景,但也想要轉職數據分析師,或運用數據分析,提升在領域的專業度嗎?

-

你是否也覺得,數據分析的網路學習資源很多,但是多到不知道從哪裡開始?

學了很多工具,但學完了,問題才真正開始,不知道業界怎麼使用?又該如何面臨工作跟面試?

-

我在 2019 年從營運專員的職位轉職到數據分析師

在這之後,因為數據分析,也讓我快速建構不同領域的知識:行銷、營運、商業策略、產品、網頁

轉職過程中,花了很多時間成本摸索

我發現,學數據分析最快的方式是:

  1. 確認自己跟市場需求之間的差距:訂定轉職策略及了解數據分析師的工作方式
  2. 以業界應用的角度學習工具:包括數據工具及分析用思維架構,並且如何高效運用
  3. 建立一個商業上的真實專案,並且得到回饋:打造屬於你及貼合職缺需求的作品集和專案
  4. 打造一個高效履歷跟面談:透過高價值包裝術拿下面試、成功獲得數據行業的門票

當初如果我有這套系統思維,應該可以在短時間內轉職,馬上拿到進入業界的門票

-

現在,我想把這套完整課程分享給你

這是專門為了 0 經驗、沒有相關背景的轉職者所設計

不需要去考研究所、不需要花大錢準備出國讀書

可以用最快的時間準備轉職、拿到門票!

-

如果你正在準備轉職數據分析師,且試圖找過解決辦法卻始終治標不治本!歡迎跟我預約免費 1 對 1 諮詢,我會在諮詢時,了解你的需求並且評估我是否可以協助到你!

電子書 職場人必學的數據分析術

Lisa Wu

Hi 大家好!我是喜歡探索身心靈健康及平衡的數據分析師 Lisa Wu!這個網站會幫助你:利用數據分析 (理性) 及 身心靈平衡 (感性) 的系統,去達成人生目標!如果你對我的人生系統工具有興趣,歡迎聯繫我:couplehonest@gmail.com

This Post Has One Comment

Comments are closed.