我們先從一個生活中的簡單例子開始。想像你是咖啡店老闆。每天都有客人來點單,你把這些資料都記錄下來。過一陣子你想知道:哪些飲料最受歡迎?過去三個月的平均消費是多少?哪幾天的營收最高?
這些問題就是分析的例子。分析本身就是把「一堆資料」變成有用資訊。而在資料庫裡做分析,其實不是什麼魔法,而是一組工具,讓你能回答這些問題。
分析常常會解決像這樣的問題:
- 分析關鍵指標(比如營收、平均消費、訂單數量)。
- 做報表:表格、圖表、圓餅圖。
- 監控趨勢:指標隨時間怎麼變化。
- 比較資料(比如不同地區之間)。
這對於做出有根據的商業決策、優化流程,甚至預測未來結果都很重要。
PL/pgSQL 在分析裡的角色
現在我們知道為什麼要做分析了,那為什麼要用 PL/pgSQL 呢?不是可以把資料匯出到 Excel 算一算就好嗎?對吧?
PL/pgSQL 可以讓你:
- 自動化計算。幹嘛每次都手動做一樣的事,能自動化就自動化啊!
- 在資料庫端處理大量資料。在伺服器端產生報表,就不用把一堆資料傳到 client app。
- 寫出強大的查詢又不會太吃資源。大表也能又快又有效率地處理。
舉個例子:你可以每天自動產生銷售報表,直接存到資料表裡,完全不用手動搞。
用程序自動化分析的好處
手動分析流程:
- 從資料庫拿資料。
- 在某個表格軟體裡處理。
- 存下結果。用 PL/pgSQL 自動化:
- 只要寫一次程序。
- 排程自動跑。
- 爽爽看結果。
完全是不同等級的方便對吧?:)
分析函式能解決哪些問題?
這裡有幾個可以用分析函式解決的問題。這些例子會讓你知道分析函式不是什麼抽象的東西,而是超實用的工具。
計算關鍵指標
關鍵指標就是能幫你評估生意狀況的數字。比如:
- 平均消費:客人平均花多少錢。
- 某段時間內的訂單總數。
- 各商品類別的銷售收入。
計算平均消費的 SQL 查詢範例:
SELECT
SUM(order_amount) / COUNT(*) AS average_order
FROM
orders
WHERE
order_date > CURRENT_DATE - INTERVAL '3 months';
建立時間序列和趨勢
假設你想知道每天的銷售怎麼變化。你可以依日期彙總資料,建立時間序列。
SELECT
order_date,
SUM(order_amount) AS daily_sales
FROM
orders
GROUP BY
order_date
ORDER BY
order_date;
比較不同時期的資料
現在假設你想比較十月和九月的營收:
SELECT
EXTRACT(MONTH FROM order_date) AS month,
SUM(order_amount) AS total_sales
FROM
orders
WHERE
order_date BETWEEN '2023-09-01' AND '2023-10-31'
GROUP BY
EXTRACT(MONTH FROM order_date);
這種做法可以讓你下結論:這兩個月有什麼變化?為什麼九月比較好?還是其實十月更強?
實際生活中怎麼用?
在真實工作裡,分析會用在這些場景:
- 行銷:搞清楚哪些管道帶來最多客人。
- 財務:算收入、損失、還有預測。
- 軟體開發:分析 app 效能。
- 遊戲產業:分析玩家行為,做個人化推薦。
現在你已經知道分析函式有什麼用了,接下來的課我們會深入技術細節,比如怎麼用 window function 跟 aggregate function 來做報表。現在先想想:你想分析哪些指標?這對你的專案會有什麼幫助?
GO TO FULL VERSION