🎯 Mục tiêu bài học
- Phân tích hiệu suất sản phẩm theo category, brand, price range
- Áp dụng ABC Classification để phân loại 2,000 sản phẩm ShopVN
- Hiểu mối quan hệ Price vs Volume vs Rating trong E-commerce
- Phân tích Product Lifecycle và xác định sản phẩm cần action
- Tối ưu product mix dựa trên dữ liệu
| Thông tin | Chi tiết |
|---|---|
| ⏱️ Thời lượng | 55 phút |
| 📖 Chủ đề chính | Product Performance, ABC, Pricing, Lifecycle |
| 💡 Kiến thức cần có | Bài 01-06, SQL cơ bản-trung cấp |
| 🎯 Output | Product scorecard cho 2,000 SKU trên ShopVN |
📖 Thuật ngữ quan trọng
| Thuật ngữ | Tiếng Việt | Mô tả |
|---|---|---|
| SKU | Stock Keeping Unit | Đơn vị quản lý tồn kho, mỗi biến thể sản phẩm là 1 SKU |
| ABC Classification | Phân loại ABC | A: top 20% (80% revenue), B: next 30%, C: bottom 50% |
| Category | Danh mục | Nhóm sản phẩm (Điện thoại, Thời trang, Gia dụng...) |
| Sell-through Rate | Tỷ lệ bán hết | Quantity Sold / Quantity Available × 100% |
| Product Mix | Cơ cấu sản phẩm | Tỷ trọng đóng góp của từng category/product |
| Margin | Biên lợi nhuận | (Selling Price - Cost) / Selling Price |
| Discount Depth | Độ sâu giảm giá | % giảm giá trung bình |
| Cross-sell | Bán chéo | Gợi ý sản phẩm bổ sung cùng đơn hàng |
| Long Tail | Đuôi dài | Nhiều sản phẩm ít bán, tổng lại cũng đáng kể |
| Dead Stock | Hàng chết | Sản phẩm tồn kho lâu, không bán được |
Checkpoint
ABC Classification: A = top 20% sản phẩm tạo 80% revenue, B = 30% tiếp theo tạo 15%, C = 50% còn lại chỉ tạo 5%. Sell-through Rate đo tốc độ bán. Cross-sell tăng AOV bằng cách gợi ý sản phẩm bổ sung.
📊 Category Performance Analysis
Revenue theo Category
1-- Performance theo category2SELECT3 p.category,4 COUNT(DISTINCT p.product_id) AS num_products,5 COUNT(DISTINCT oi.order_id) AS orders,6 SUM(oi.quantity) AS units_sold,7 SUM(oi.line_total) AS total_revenue,8 ROUND(AVG(oi.unit_price), 0) AS avg_price,9 ROUND(AVG(p.discount_percent), 1) AS avg_discount_pct,10 ROUND(AVG(p.rating), 2) AS avg_rating,11 ROUND(12 SUM(oi.line_total) * 100.0 / SUM(SUM(oi.line_total)) OVER(), 113 ) AS revenue_share_pct14FROM fact_order_items oi15JOIN dim_product p ON oi.product_id = p.product_id16JOIN fact_orders o ON oi.order_id = o.order_id17WHERE o.status = 'Delivered'18GROUP BY p.category19ORDER BY total_revenue DESC;Top Products per Category
1-- Top 5 sản phẩm mỗi category2WITH product_rank AS (3 SELECT4 p.category,5 p.product_name,6 p.brand,7 SUM(oi.line_total) AS revenue,8 SUM(oi.quantity) AS units,9 ROUND(AVG(p.rating), 1) AS rating,10 ROW_NUMBER() OVER (11 PARTITION BY p.category12 ORDER BY SUM(oi.line_total) DESC13 ) AS rank_in_category14 FROM fact_order_items oi15 JOIN dim_product p ON oi.product_id = p.product_id16 JOIN fact_orders o ON oi.order_id = o.order_id17 WHERE o.status = 'Delivered'18 GROUP BY p.category, p.product_name, p.brand19)20SELECT *21FROM product_rank22WHERE rank_in_category <= 523ORDER BY category, rank_in_category;🔤 ABC Classification
Áp dụng ABC trên ShopVN
1-- ABC Classification cho 2,000 sản phẩm2WITH product_revenue AS (3 SELECT4 p.product_id,5 p.product_name,6 p.category,7 p.brand,8 SUM(oi.line_total) AS revenue9 FROM fact_order_items oi10 JOIN dim_product p ON oi.product_id = p.product_id11 JOIN fact_orders o ON oi.order_id = o.order_id12 WHERE o.status = 'Delivered'13 GROUP BY p.product_id, p.product_name, p.category, p.brand14),15cumulative AS (16 SELECT17 *,18 SUM(revenue) OVER (ORDER BY revenue DESC) AS cumulative_revenue,19 SUM(revenue) OVER () AS total_revenue20 FROM product_revenue21)22SELECT23 *,24 ROUND(cumulative_revenue * 100.0 / total_revenue, 1) AS cumulative_pct,25 CASE26 WHEN cumulative_revenue * 100.0 / total_revenue <= 80 THEN 'A'27 WHEN cumulative_revenue * 100.0 / total_revenue <= 95 THEN 'B'28 ELSE 'C'29 END AS abc_class30FROM cumulative31ORDER BY revenue DESC;Kết quả ABC trên ShopVN
| Class | Số SP | % Số SP | % Revenue | Chiến lược |
|---|---|---|---|---|
| A | ~400 | 20% | 80% | Ưu tiên tồn kho, prominent display, protect |
| B | ~600 | 30% | 15% | Monitor, tìm cách upgrade lên A |
| C | ~1,000 | 50% | 5% | Giảm tồn kho, bundles, clearance |
50% sản phẩm (Class C) chỉ tạo 5% revenue nhưng không nên loại bỏ hoàn toàn. Lý do: (1) Category coverage — thu hút traffic niche, (2) Cross-sell opportunities, (3) Một số sản phẩm C có thể trở thành A theo mùa.
Checkpoint
ABC Classification sử dụng cumulative revenue %: A = top 80%, B = tiếp 15%, C = còn lại 5%. Pareto Principle: 20% sản phẩm tạo 80% doanh thu. Sản phẩm Class A cần ưu tiên tồn kho và hiển thị.
💰 Pricing Analysis
Price vs Volume vs Rating
1-- Phân tích Price Range2WITH price_ranges AS (3 SELECT4 CASE5 WHEN p.selling_price < 100000 THEN 'Under 100K'6 WHEN p.selling_price < 500000 THEN '100K-500K'7 WHEN p.selling_price < 1000000 THEN '500K-1M'8 WHEN p.selling_price < 5000000 THEN '1M-5M'9 WHEN p.selling_price < 10000000 THEN '5M-10M'10 ELSE 'Over 10M'11 END AS price_range,12 oi.quantity,13 oi.line_total,14 p.rating,15 p.discount_percent16 FROM fact_order_items oi17 JOIN dim_product p ON oi.product_id = p.product_id18 JOIN fact_orders o ON oi.order_id = o.order_id19 WHERE o.status = 'Delivered'20)21SELECT22 price_range,23 SUM(quantity) AS units_sold,24 SUM(line_total) AS revenue,25 ROUND(AVG(rating), 2) AS avg_rating,26 ROUND(AVG(discount_percent), 1) AS avg_discount_pct,27 ROUND(SUM(line_total) * 100.0 / SUM(SUM(line_total)) OVER(), 1) AS revenue_share_pct28FROM price_ranges29GROUP BY price_range30ORDER BY MIN(CASE31 WHEN price_range = 'Under 100K' THEN 132 WHEN price_range = '100K-500K' THEN 233 WHEN price_range = '500K-1M' THEN 334 WHEN price_range = '1M-5M' THEN 435 WHEN price_range = '5M-10M' THEN 536 ELSE 637END);Discount Impact Analysis
1-- Ảnh hưởng của discount đến volume2SELECT3 CASE4 WHEN p.discount_percent = 0 THEN 'No Discount'5 WHEN p.discount_percent <= 10 THEN '1-10%'6 WHEN p.discount_percent <= 20 THEN '11-20%'7 WHEN p.discount_percent <= 30 THEN '21-30%'8 ELSE 'Over 30%'9 END AS discount_range,10 COUNT(DISTINCT oi.order_id) AS orders,11 SUM(oi.quantity) AS units_sold,12 ROUND(AVG(oi.unit_price), 0) AS avg_unit_price,13 ROUND(AVG(p.rating), 2) AS avg_rating14FROM fact_order_items oi15JOIN dim_product p ON oi.product_id = p.product_id16JOIN fact_orders o ON oi.order_id = o.order_id17WHERE o.status = 'Delivered'18GROUP BY CASE19 WHEN p.discount_percent = 0 THEN 'No Discount'20 WHEN p.discount_percent <= 10 THEN '1-10%'21 WHEN p.discount_percent <= 20 THEN '11-20%'22 WHEN p.discount_percent <= 30 THEN '21-30%'23 ELSE 'Over 30%'24END25ORDER BY MIN(p.discount_percent);Discount quá sâu (trên 30%) có thể:
- 📈 Tăng volume ngắn hạn nhưng giảm margin
- 🏷️ Tạo thói quen chỉ mua khi sale (deal seeker behavior)
- ⬇️ Ảnh hưởng brand perception — khách nghĩ hàng kém chất lượng
- 📉 Khi hết sale, volume drop mạnh (sugar rush effect)
📋 Tổng kết
Kiến thức đã học
| Chủ đề | Nội dung chính |
|---|---|
| Category Performance | Revenue share, units sold, rating theo category |
| ABC Classification | A (20% SP, 80% Rev), B (30%, 15%), C (50%, 5%) |
| Pricing Analysis | Price range vs volume, discount impact |
| Cross-sell | Sản phẩm hay được mua cùng — tăng AOV |
| Long Tail | 50% sản phẩm C vẫn có giá trị (coverage, niche traffic) |
Key Takeaways
- ✅ ABC Classification là framework đầu tiên khi phân tích product — focus vào Class A
- ✅ Price và Volume có mối quan hệ nghịch — nhưng discount quá sâu gây hại
- ✅ Category performance thay đổi theo mùa — cần monitoring liên tục
- ✅ Cross-sell analysis tăng AOV 15-30% mà không cần thêm traffic
Bài tiếp theo: Seller & Marketplace Analytics →
🎉 Bạn đã thành thạo Product Analytics! Bài tiếp theo phân tích hiệu suất sellers trên marketplace.
