跳到主要內容
Cypher's Practical Coding
正在準備工作環境...

時間序列與趨勢分析

這個月營收到底是成長還是衰退?老闆看的是趨勢,不是單一數字。但原始日營收上上下下很難看出方向,你需要的是移動平均來抹平波動,和 MoM / YoY 成長率來量化變化幅度。

  • 移動平均 = 取前 N 天的平均值,抹平短期波動
  • MoM(Month over Month) = 本月 vs 上月的成長率
  • YoY(Year over Year) = 本月 vs 去年同月的成長率

日營收趨勢

先看每天的營收:

7 日移動平均

用窗口函數的 ROWS BETWEEN 算前 7 天的平均:

重點:

  • ROWS BETWEEN 6 PRECEDING AND CURRENT ROW = 當天 + 前 6 天 = 共 7 天
  • 前 6 天不滿的話,就用有的天數算平均(不會報錯)
  • 移動平均線比原始數據更能看出趨勢方向

月營收與 MoM 成長率

解讀:

  • LAG(revenue) 取上個月的營收
  • MoM 成長率 = (本月 - 上月) / 上月 x 100
  • 第一個月沒有上月資料,成長率會是 NULL

週營收趨勢

有時候日營收太細、月營收太粗,週是個好的中間粒度:

同時看訂單數和客單價趨勢

營收 = 訂單數 x 客單價。營收下降是因為訂單變少,還是客單價變低?

AI 協作:學了這個,跟 AI 怎麼配合?

時間序列分析的 SQL 模式很固定(GROUP BY 時間 + 窗口函數),AI 可以快速套用。但解讀數字需要你。

你的人類優勢:

  • 你知道哪個月有促銷、節日效應
  • 你能判斷成長率的波動是正常季節性還是異常
  • 你能決定要看日/週/月哪個粒度

可以這樣跟 AI 說:

幫我算每月營收的 MoM 成長率,同時拆解訂單數和客單價的 MoM 變化,看營收成長是靠訂單量還是客單價。用 orders 表,只算 completed。

練習題

互動示範

DEMO 1可以修改程式碼試玩
DEMO 2可以修改程式碼試玩
DEMO 3可以修改程式碼試玩
DEMO 4可以修改程式碼試玩
DEMO 5可以修改程式碼試玩

挑戰任務

Task 1

算出每天的營收和 7 日移動平均(顯示 order_date、daily_revenue、ma_7day),只算 completed 訂單,按日期排序

Task 2

算出每月營收和 MoM 成長率百分比(顯示 month、revenue、mom_growth_pct),只算 completed 訂單,按月份排序

Task 3

拆解每月的訂單數和平均客單價(顯示 month、order_count、avg_order_value),只算 completed,按月份排序

BackNext Lesson →