課程 23:真實商業報表練習一
本課以 SQL 實作真實銷售分析報表,包括總銷售額、暢銷商品、產品比較等查詢,適合資料分析初學者實作練習。
一、商業報表的需求
- 商業世界需要從數據中提取洞察,以支持決策。
- SQL 是生成各種商業報表的核心工具。
- 常見的商業報表包括銷售分析、庫存報告、客戶細分等。
二、銷售分析基礎
- 銷售分析旨在了解產品表現、客戶購買習慣和銷售趨勢。
- 常用的分析指標包括總銷售額、平均訂單金額、暢銷產品、銷售區域分佈等。
三、運用 SQL 進行銷售分析
我們將結合之前學到的知識來分析銷售數據。
計算總銷售額
SELECT SUM(amount) AS total_sales\nFROM orders;\n
按產品統計銷售數量
SELECT product_id, COUNT(*) AS total_quantity\nFROM order_items\nGROUP BY product_id\nORDER BY total_quantity DESC;\n
找出銷售額高於平均的產品
SELECT product_id, SUM(amount) AS total_product_sales\nFROM order_items\nGROUP BY product_id\nHAVING SUM(amount) > (SELECT AVG(amount) FROM order_items);\n
四、數據準備 (通常需要 JOIN)
在真實場景中,銷售數據可能分佈在訂單 (orders)、訂單明細 (order_items) 和產品 (products) 等多個表格中,需要使用 JOIN 來整合。
範例:查詢每個產品的銷售總金額(結合 products 和 order_items 表)
SELECT p.name, SUM(oi.quantity * p.price) AS total_revenue
FROM order_items oi
JOIN products p ON oi.product_id = p.id
GROUP BY p.name
ORDER BY total_revenue DESC;
五、常見挑戰
- 理解複雜的報表需求。
- 處理不乾淨或不完整的數據。
- 選擇正確的 JOIN 類型和聚合函數。
- 優化查詢以提高報表生成速度。
六、課後小練習
- 假設有一個
customers
表 (id, name) 和orders
表 (order_id, customer_id, order_date, amount)。請寫出一個查詢,找出每位客戶的總消費金額,並按總金額從高到低排序。 - 假設
orders
表中有一個order_date
欄位(格式為 YYYY-MM-DD)。請寫出一個查詢,統計 2023 年每個月的總銷售額。
互動練習:銷售數據分析模擬
訂單數據(簡化 orders 表)
order_id | customer_id | amount | product_id |
---|---|---|---|
101 | 1 | 500 | A01 |
102 | 2 | 800 | B02 |
103 | 1 | 300 | A01 |
104 | 3 | 1200 | C03 |
105 | 2 | 450 | A01 |
106 | 3 | 750 | B02 |