MinAI - Về trang chủ
Lý thuyết
7/1355 phút
Đang tải...

Product Analytics

Category performance, ABC classification, pricing analysis và product lifecycle trong E-commerce

0

🎯 Mục tiêu bài học

TB5 min
Sau bài học này, bạn sẽ:
  • 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 bài học
Thông tinChi tiết
⏱️ Thời lượng55 phút
📖 Chủ đề chínhProduct Performance, ABC, Pricing, Lifecycle
💡 Kiến thức cần cóBài 01-06, SQL cơ bản-trung cấp
🎯 OutputProduct scorecard cho 2,000 SKU trên ShopVN
1

📖 Thuật ngữ quan trọng

TB5 min
Thuật ngữTiếng ViệtMô tả
SKUStock Keeping UnitĐơn vị quản lý tồn kho, mỗi biến thể sản phẩm là 1 SKU
ABC ClassificationPhân loại ABCA: top 20% (80% revenue), B: next 30%, C: bottom 50%
CategoryDanh mụcNhóm sản phẩm (Điện thoại, Thời trang, Gia dụng...)
Sell-through RateTỷ lệ bán hếtQuantity Sold / Quantity Available × 100%
Product MixCơ cấu sản phẩmTỷ trọng đóng góp của từng category/product
MarginBiên lợi nhuận(Selling Price - Cost) / Selling Price
Discount DepthĐộ sâu giảm giá% giảm giá trung bình
Cross-sellBán chéoGợi ý sản phẩm bổ sung cùng đơn hàng
Long TailĐuôi dàiNhiều sản phẩm ít bán, tổng lại cũng đáng kể
Dead StockHàng chếtSả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.

2

📊 Category Performance Analysis

TB5 min

Revenue theo Category

SQL
1-- Performance theo category
2SELECT
3 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(), 1
13 ) AS revenue_share_pct
14FROM fact_order_items oi
15JOIN dim_product p ON oi.product_id = p.product_id
16JOIN fact_orders o ON oi.order_id = o.order_id
17WHERE o.status = 'Delivered'
18GROUP BY p.category
19ORDER BY total_revenue DESC;

Top Products per Category

SQL
1-- Top 5 sản phẩm mỗi category
2WITH product_rank AS (
3 SELECT
4 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.category
12 ORDER BY SUM(oi.line_total) DESC
13 ) AS rank_in_category
14 FROM fact_order_items oi
15 JOIN dim_product p ON oi.product_id = p.product_id
16 JOIN fact_orders o ON oi.order_id = o.order_id
17 WHERE o.status = 'Delivered'
18 GROUP BY p.category, p.product_name, p.brand
19)
20SELECT *
21FROM product_rank
22WHERE rank_in_category <= 5
23ORDER BY category, rank_in_category;
3

🔤 ABC Classification

TB5 min

Áp dụng ABC trên ShopVN

SQL
1-- ABC Classification cho 2,000 sản phẩm
2WITH product_revenue AS (
3 SELECT
4 p.product_id,
5 p.product_name,
6 p.category,
7 p.brand,
8 SUM(oi.line_total) AS revenue
9 FROM fact_order_items oi
10 JOIN dim_product p ON oi.product_id = p.product_id
11 JOIN fact_orders o ON oi.order_id = o.order_id
12 WHERE o.status = 'Delivered'
13 GROUP BY p.product_id, p.product_name, p.category, p.brand
14),
15cumulative AS (
16 SELECT
17 *,
18 SUM(revenue) OVER (ORDER BY revenue DESC) AS cumulative_revenue,
19 SUM(revenue) OVER () AS total_revenue
20 FROM product_revenue
21)
22SELECT
23 *,
24 ROUND(cumulative_revenue * 100.0 / total_revenue, 1) AS cumulative_pct,
25 CASE
26 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_class
30FROM cumulative
31ORDER BY revenue DESC;

Kết quả ABC trên ShopVN

ClassSố SP% Số SP% RevenueChiến lược
A~40020%80%Ưu tiên tồn kho, prominent display, protect
B~60030%15%Monitor, tìm cách upgrade lên A
C~1,00050%5%Giảm tồn kho, bundles, clearance
Long Tail trong E-commerce

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ị.

4

💰 Pricing Analysis

TB5 min

Price vs Volume vs Rating

SQL
1-- Phân tích Price Range
2WITH price_ranges AS (
3 SELECT
4 CASE
5 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_percent
16 FROM fact_order_items oi
17 JOIN dim_product p ON oi.product_id = p.product_id
18 JOIN fact_orders o ON oi.order_id = o.order_id
19 WHERE o.status = 'Delivered'
20)
21SELECT
22 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_pct
28FROM price_ranges
29GROUP BY price_range
30ORDER BY MIN(CASE
31 WHEN price_range = 'Under 100K' THEN 1
32 WHEN price_range = '100K-500K' THEN 2
33 WHEN price_range = '500K-1M' THEN 3
34 WHEN price_range = '1M-5M' THEN 4
35 WHEN price_range = '5M-10M' THEN 5
36 ELSE 6
37END);

Discount Impact Analysis

SQL
1-- Ảnh hưởng của discount đến volume
2SELECT
3 CASE
4 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_rating
14FROM fact_order_items oi
15JOIN dim_product p ON oi.product_id = p.product_id
16JOIN fact_orders o ON oi.order_id = o.order_id
17WHERE o.status = 'Delivered'
18GROUP BY CASE
19 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%'
24END
25ORDER BY MIN(p.discount_percent);
Bẫy Discount

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)
5

📋 Tổng kết

TB5 min

Kiến thức đã học

Chủ đềNội dung chính
Category PerformanceRevenue share, units sold, rating theo category
ABC ClassificationA (20% SP, 80% Rev), B (30%, 15%), C (50%, 5%)
Pricing AnalysisPrice range vs volume, discount impact
Cross-sellSản phẩm hay được mua cùng — tăng AOV
Long Tail50% sản phẩm C vẫn có giá trị (coverage, niche traffic)

Key Takeaways

  1. ABC Classification là framework đầu tiên khi phân tích product — focus vào Class A
  2. Price và Volume có mối quan hệ nghịch — nhưng discount quá sâu gây hại
  3. Category performance thay đổi theo mùa — cần monitoring liên tục
  4. 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.