什麼情境下會需要用到 SQL 累積加總?
資料庫儲存的資料通常都是今天的業績多少,因此如果我們正在追一個年底要達到多少的目標的時候,以累積加總的形式顯示離目標還有多遠,就是一個很重要的使用場景
累積加總怎麼寫?2 種 SQL 寫法舉例
請大家先 copy 一份出來:Google sheet 範例資料集,裡面會包含
- 範例資料集
- 2 種 SQL 寫法的結果
需要具備的 SQL 技能?
- 基本 SQL 函數:最白話的 SQL 語法教學攻略:10 個我最常用的
- 視窗函數 Window Fuction:3 個寫法:搞懂 SQL 視窗函數 Window Function
這兩篇看完之後,待會分享的 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 函數?
- 使用 Google BigQuery 沙盒功能
- 匯入 Google Sheet 裡的資料集,之前有寫過一篇教學,如果不會的話可以看這裡:Google BigQuery 教學:3 分鐘完成資料匯入跟 SQL 查詢
- 練習上面的所有寫法,output 出結果!
更多學習資源推薦
- Coursera:SQL for Data Science:英文課程,當初上完這門課之後,足夠應付 SQL 公司的上機考
- SQL 的五十道練習:初學者友善的資料庫入門:中文課程,老師在台大進修部教很多年 (都是數據分析相關的課程),我的 R 也是跟老師學的,這次推出搭配很多練習題的 SQL 線上課程
- Google Data Analytics Professional Certificate:Google 認證的資料分析師證照課程有幫助嗎? 誰最適合上?可以參考我的學習心得,證照班適合想要全方位學習數據分析工具跟技巧的人!
如何使用這個網站?我的數據分析文章導覽!裡面也會分享更多實用 SQL 教學:本站數據分析文章導覽 及 更多 SQL 實用文章教學
Pingback: [數據分析#0] 數據分析文章導覽 - Lisa Wu 財富自由之路