🎯 Mục tiêu bài học
- Hiểu tại sao phân khúc khách hàng là cốt lõi của E-commerce Analytics
- Thực hiện RFM Analysis đầy đủ bằng SQL trên dataset ShopVN
- Tạo customer segments và mô tả profile từng nhóm
- Tính toán Customer Lifetime Value (CLV) và ý nghĩa kinh doanh
- Đề xuất chiến lược marketing phù hợp cho từng segment
| Thông tin | Chi tiết |
|---|---|
| ⏱️ Thời lượng | 60 phút |
| 📖 Chủ đề chính | RFM Analysis, Customer Segments, CLV |
| 💡 Kiến thức cần có | Bài 01-04, SQL Window Functions |
| 🎯 Output | RFM segmentation cho 80K khách hàng ShopVN |
📖 Thuật ngữ quan trọng
| Thuật ngữ | Tiếng Việt | Mô tả |
|---|---|---|
| RFM | Recency-Frequency-Monetary | Mô hình phân khúc dựa trên 3 chiều: gần đây, tần suất, giá trị |
| Recency | Độ gần đây | Số ngày kể từ lần mua cuối |
| Frequency | Tần suất | Số lần mua hàng trong khoảng thời gian |
| Monetary | Giá trị tiền tệ | Tổng chi tiêu trong khoảng thời gian |
| CLV | Customer Lifetime Value | Tổng giá trị kỳ vọng một khách hàng mang lại |
| Churn | Rời bỏ | Khách hàng ngừng mua hàng |
| Winback | Kéo lại | Chiến lược thu hút khách đã rời bỏ quay lại |
| High-value | Giá trị cao | Khách hàng có spending hoặc CLV cao |
| Segment Profile | Hồ sơ phân khúc | Mô tả đặc điểm, hành vi của một nhóm khách hàng |
| Percentile | Phân vị | Điểm chia dữ liệu thành 100 phần bằng nhau |
Checkpoint
RFM gồm 3 chiều: Recency (mua gần đây?), Frequency (mua thường xuyên?), Monetary (chi tiêu nhiều?). Mỗi chiều được chia thành 4-5 nhóm tạo ra các customer segments. CLV dự đoán tổng giá trị khách hàng mang lại trong tương lai.
📊 Tại sao phân khúc khách hàng?
Quy tắc 80/20 trong E-commerce
20% khách hàng tạo ra 80% doanh thu. Không phải tất cả khách hàng đều giống nhau — việc đối xử giống nhau với mọi khách hàng là lãng phí ngân sách marketing và bỏ lỡ cơ hội upsell.
Segmentation giúp gì?
Lợi ích của Customer Segmentation
🔢 RFM Analysis — Lý thuyết
3 chiều của RFM
| Chiều | Ý nghĩa | Cách tính | High = Good? |
|---|---|---|---|
| R (Recency) | Mua gần đây | Số ngày từ last purchase đến hôm nay | Số ngày NHỎ = Tốt |
| F (Frequency) | Mua thường xuyên | Tổng số đơn hàng | Số đơn LỚN = Tốt |
| M (Monetary) | Chi tiêu nhiều | Tổng tiền chi tiêu | Tổng tiền LỚN = Tốt |
Scoring: Chia thành 4 nhóm (1-4)
Quy trình RFM Scoring
| R Score | Ý nghĩa | F Score | Ý nghĩa | M Score | Ý nghĩa |
|---|---|---|---|---|---|
| 4 | Rất gần (0-30 ngày) | 4 | Rất thường xuyên | 4 | Chi tiêu rất cao |
| 3 | Gần (31-90 ngày) | 3 | Thường xuyên | 3 | Chi tiêu cao |
| 2 | Khá lâu (91-180 ngày) | 2 | Trung bình | 2 | Chi tiêu trung bình |
| 1 | Rất lâu (180+ ngày) | 1 | Hiếm khi | 1 | Chi tiêu thấp |
💻 RFM Analysis — Thực hành SQL
Step 1: Tính R, F, M cho mỗi khách hàng
1-- Step 1: Tính Recency, Frequency, Monetary2WITH rfm_base AS (3 SELECT4 customer_id,5 DATEDIFF(DAY, MAX(order_date), '2024-12-31') AS recency_days,6 COUNT(DISTINCT order_id) AS frequency,7 SUM(total_amount) AS monetary8 FROM fact_orders9 WHERE status = 'Delivered'10 AND YEAR(order_date) IN (2023, 2024)11 GROUP BY customer_id12),1314-- Step 2: Scoring bằng NTILE (chia 4 nhóm)15rfm_scores AS (16 SELECT17 customer_id,18 recency_days,19 frequency,20 monetary,21 -- Recency: ngày càng nhỏ càng tốt → score cao22 NTILE(4) OVER (ORDER BY recency_days DESC) AS r_score,23 -- Frequency: càng nhiều càng tốt → score cao24 NTILE(4) OVER (ORDER BY frequency ASC) AS f_score,25 -- Monetary: càng lớn càng tốt → score cao26 NTILE(4) OVER (ORDER BY monetary ASC) AS m_score27 FROM rfm_base28)2930-- Step 3: Tạo RFM segment31SELECT32 customer_id,33 recency_days,34 frequency,35 monetary,36 r_score,37 f_score,38 m_score,39 CONCAT(r_score, f_score, m_score) AS rfm_score,40 CASE41 WHEN r_score >= 3 AND f_score >= 3 AND m_score >= 3 THEN 'Champions'42 WHEN r_score >= 3 AND f_score >= 2 AND m_score >= 2 THEN 'Loyal Customers'43 WHEN r_score >= 3 AND f_score <= 2 THEN 'New Customers'44 WHEN r_score = 2 AND f_score >= 2 THEN 'At Risk'45 WHEN r_score = 2 AND f_score = 1 THEN 'About to Sleep'46 WHEN r_score = 1 AND f_score >= 3 THEN 'Cant Lose Them'47 WHEN r_score = 1 AND f_score >= 2 THEN 'Hibernating'48 WHEN r_score = 1 AND f_score = 1 THEN 'Lost'49 ELSE 'Others'50 END AS segment51FROM rfm_scores;Step 2: Thống kê theo Segment
1-- Tổng hợp khách hàng theo segment2WITH rfm_full AS (3 -- (... CTE bên trên ...)4 SELECT *, CASE ... END AS segment FROM rfm_scores5)6SELECT7 segment,8 COUNT(*) AS customers,9 ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 1) AS pct_customers,10 ROUND(AVG(recency_days), 0) AS avg_recency,11 ROUND(AVG(frequency), 1) AS avg_frequency,12 ROUND(AVG(monetary), 0) AS avg_monetary,13 SUM(monetary) AS total_revenue,14 ROUND(SUM(monetary) * 100.0 / SUM(SUM(monetary)) OVER(), 1) AS pct_revenue15FROM rfm_full16GROUP BY segment17ORDER BY avg_monetary DESC;Checkpoint
RFM Analysis gồm 3 bước: (1) Tính R, F, M cho mỗi khách hàng, (2) Scoring bằng NTILE chia 4 nhóm, (3) Gán segment dựa trên tổ hợp scores. NTILE(4) tự động chia đều khách hàng thành 4 nhóm theo thứ tự.
👥 Customer Segment Profiles
8 Segments chính
| Segment | R | F | M | Mô tả | Chiến lược |
|---|---|---|---|---|---|
| Champions | Cao | Cao | Cao | Khách VIP, mua thường xuyên, chi tiêu lớn | Reward program, exclusive offers |
| Loyal Customers | Cao | TB+ | TB+ | Khách trung thành, mua đều đặn | Upsell, cross-sell, referral |
| New Customers | Cao | Thấp | — | Mới mua lần đầu hoặc ít | Welcome series, nurture |
| At Risk | TB | TB+ | — | Từng mua thường, đang giảm dần | Win-back offers, surveys |
| About to Sleep | TB | Thấp | — | Sắp trở thành inactive | Re-engagement campaign |
| Cant Lose Them | Thấp | Cao | — | Từng rất active, lâu không quay lại | Aggressive win-back, special deals |
| Hibernating | Thấp | TB | — | Đã ngừng mua một thời gian | Discount codes, what is new |
| Lost | Thấp | Thấp | Thấp | Đã mất — khó kéo lại | Last-chance offers hoặc bỏ qua |
Chiến lược Marketing theo Segment
Chiến lược theo RFM Segment
💰 Customer Lifetime Value (CLV)
CLV là gì?
CLV dự đoán tổng giá trị mà một khách hàng sẽ mang lại trong toàn bộ thời gian họ là khách hàng. CLV giúp trả lời: "Nên chi bao nhiêu để có được một khách hàng mới?" (CAC phải thấp hơn CLV).
Tính CLV đơn giản
1-- CLV = Avg Order Value × Purchase Frequency × Customer Lifespan2WITH customer_metrics AS (3 SELECT4 customer_id,5 COUNT(DISTINCT order_id) AS total_orders,6 SUM(total_amount) AS total_spent,7 AVG(total_amount) AS avg_order_value,8 DATEDIFF(MONTH, MIN(order_date), MAX(order_date)) + 1 AS active_months,9 DATEDIFF(DAY, MAX(order_date), '2024-12-31') AS days_since_last10 FROM fact_orders11 WHERE status = 'Delivered'12 GROUP BY customer_id13)14SELECT15 -- Thống kê tổng thể16 COUNT(*) AS total_customers,17 ROUND(AVG(avg_order_value), 0) AS avg_aov,18 ROUND(AVG(total_orders), 1) AS avg_frequency,19 ROUND(AVG(active_months), 1) AS avg_lifespan_months,20 ROUND(AVG(total_spent), 0) AS avg_clv,2122 -- Phân bố CLV23 ROUND(PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY total_spent), 0) AS clv_p25,24 ROUND(PERCENTILE_CONT(0.50) WITHIN GROUP (ORDER BY total_spent), 0) AS clv_median,25 ROUND(PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY total_spent), 0) AS clv_p75,26 ROUND(PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY total_spent), 0) AS clv_p9527FROM customer_metrics;CLV theo Segment
1-- CLV trung bình theo RFM segment2-- (Giả sử đã có bảng rfm_segments từ bước trước)3SELECT4 segment,5 COUNT(*) AS customers,6 ROUND(AVG(monetary), 0) AS avg_clv,7 ROUND(AVG(frequency), 1) AS avg_orders,8 ROUND(AVG(monetary / NULLIF(frequency, 0)), 0) AS avg_order_value9FROM rfm_segments10GROUP BY segment11ORDER BY avg_clv DESC;Trong E-commerce, CLV nên gấp ít nhất 3 lần CAC (Chi phí có được khách hàng). Nếu trung bình CLV = 5M VND, thì CAC không nên vượt quá 1.67M VND. Champions có CLV cao gấp 5-10 lần Lost customers.
📋 Tổng kết
Kiến thức đã học
| Chủ đề | Nội dung chính |
|---|---|
| Tại sao segmentation | 20% khách tạo 80% doanh thu — cần đối xử khác nhau |
| RFM Analysis | Recency × Frequency × Monetary scoring |
| SQL Implementation | NTILE(4) + CASE WHEN để tạo segments |
| 8 Segments | Champions → Loyal → New → At Risk → Lost |
| Marketing Strategy | Retain (Champions), Grow (New), Win-back (Lost) |
| CLV | AOV × Frequency × Lifespan, CLV nên gấp 3 lần CAC |
Key Takeaways
- ✅ RFM là phương pháp segmentation phổ biến nhất — đơn giản, hiệu quả, actionable
- ✅ Champions (10-15%) tạo ra 40-50% doanh thu — ưu tiên giữ chân nhóm này
- ✅ CLV giúp quyết định ngân sách marketing — chi bao nhiêu để có 1 khách mới
- ✅ Mỗi segment cần chiến lược riêng — không one-size-fits-all
Bài tiếp theo: Cohort & Retention Analysis →
🎉 Bạn đã thành thạo RFM Customer Segmentation! Bài tiếp theo sẽ phân tích retention và churn theo cohort.
