Chào cộng đồng Data & AI,
Trong công việc hàng ngày, một trong những câu hỏi mình nhận được nhiều nhất là: “Làm sao để phân tích khách hàng hiệu quả mà không cần công cụ đắt tiền?”
Câu trả lời đơn giản hơn bạn nghĩ: RFM Analysis — và bạn chỉ cần SQL là đủ.
1. RFM là gì? Đừng để cái tên đánh lừa bạn
RFM là viết tắt của 3 chỉ số:
- Recency (R): Khách mua lần cuối cách đây bao lâu? Người mua gần đây → khả năng mua lại cao hơn.
- Frequency (F): Khách mua bao nhiêu lần? Người mua thường xuyên → trung thành hơn.
- Monetary (M): Khách đã chi bao nhiêu tiền? Người chi nhiều → giá trị cao hơn.
Hãy tưởng tượng bạn có 10.000 khách hàng. Bạn không thể chăm sóc tất cả như nhau — ngân sách và thời gian có hạn. RFM giúp bạn biết ai cần được ưu tiên nhất.
2. Query SQL để chạy RFM — Thực hành ngay
Đây là query hoàn chỉnh bạn có thể chạy ngay trên SQL Server hoặc PostgreSQL:
WITH rfm_base AS (
SELECT
customer_id,
DATEDIFF(day, MAX(order_date), GETDATE()) AS recency,
COUNT(DISTINCT order_id) AS frequency,
SUM(total_amount) AS monetary
FROM orders
WHERE status NOT IN ('Cancelled', 'Returned')
GROUP BY customer_id
),
rfm_score AS (
SELECT *,
NTILE(5) OVER (ORDER BY recency ASC) AS r_score,
NTILE(5) OVER (ORDER BY frequency DESC) AS f_score,
NTILE(5) OVER (ORDER BY monetary DESC) AS m_score
FROM rfm_base
)
SELECT
customer_id,
recency, frequency, monetary,
CASE
WHEN r_score >= 4 AND f_score >= 4 THEN 'Champions'
WHEN r_score >= 3 AND f_score >= 3 THEN 'Loyal Customers'
WHEN r_score >= 4 AND f_score < 3 THEN 'New Customers'
WHEN r_score <= 2 AND f_score >= 4 THEN 'At Risk'
WHEN r_score <= 2 AND f_score <= 2 THEN 'Lost'
ELSE 'Potential'
END AS customer_segment
FROM rfm_score
ORDER BY r_score + f_score + m_score DESC;
3. Đọc kết quả và hành động thực tế
Sau khi chạy query, bạn sẽ có bảng phân khúc khách hàng. Đây là cách dùng từng nhóm:
- Champions (R≥4, F≥4): Khách VIP — tặng quà, chương trình loyalty, hỏi ý kiến sản phẩm mới.
- At Risk (R≤2, F≥4): Từng trung thành nhưng đang “nguội” — gửi email re-engagement, ưu đãi đặc biệt.
- Lost (R≤2, F≤2): Đừng tốn ngân sách marketing — chi phí thu hồi quá cao so với giá trị.
- New Customers (R≥4, F<3): Mới mua lần đầu — tập trung onboarding, tạo thói quen mua lại.
Một doanh nghiệp bán lẻ sau khi áp dụng RFM đã giảm 40% chi phí marketing bằng cách dừng chạy ads cho nhóm “Lost” và tập trung ngân sách vào “Champions” và “At Risk”.
4. Kết nối RFM với Power BI
Sau khi có bảng phân khúc, bước tiếp theo là trực quan hóa trong Power BI:
- Import kết quả SQL query vào Power BI
- Tạo Donut Chart hiển thị tỷ lệ % từng nhóm khách hàng
- Dùng Slicer lọc theo thời gian để xem sự dịch chuyển phân khúc theo tháng
- Tạo KPI Card: số lượng “At Risk” cần chăm sóc tuần này
Khi bạn kết hợp SQL (phân tích) + Power BI (trực quan hóa) + RFM (framework) — đó chính xác là bộ kỹ năng của một Data Analyst thực chiến.
Bạn đã thử RFM chưa? Comment dataset bạn đang dùng — mình sẽ gợi ý cách adapt query cho phù hợp!
Triều Đặng — Middle Data Analyst tại MCNA Technology School.
🌐 Website chính thức | 📞 0916.442.368 (Mr. Son)
Hệ thống cơ sở đào tạo:
📍 Cơ sở 1: 30 Trung Liệt, Đống Đa, Hà Nội.
📍 Cơ sở 2: Liền kề 44B, TT2, Văn Quán, Hà Đông, Hà Nội.
📍 Cơ sở 3: The BIB Space, 50B Phan Tây Hồ, Cầu Kiệu, TPHCM.
