Setiap pelanggan tidak lahir setara. Sebagian membeli setiap minggu, sebagian baru sekali lalu hilang, dan sebagian lagi sudah lama tidak kembali padahal dulu rajin berbelanja. Jika semua diperlakukan sama, strategi marketing Anda membuang waktu dan budget. Di sinilah RFM analysis hadir — sebuah metode sederhana namun sangat ampuh untuk mengelompokkan pelanggan berdasarkan perilaku transaksinya.
Kabar baiknya, RFM tidak butuh machine learning yang rumit. Cukup memanfaatkan SQL untuk menghitung dan memberi skor, lalu Python untuk validasi dan analisis lanjutan. Artikel ini akan menuntun Anda selangkah demi selangkah, dari data mentah transaksi hingga segmen pelanggan yang siap dieksekusi tim marketing.
- R (Recency): Seberapa baru pelanggan terakhir bertransaksi.
- F (Frequency): Seberapa sering pelanggan bertransaksi.
- M (Monetary): Seberapa besar total nilai transaksinya.
- Setiap komponen diskor 1–5 lalu digabung menjadi segmen seperti Champions, Loyal, hingga At Risk.
🎯 Apa Itu RFM Analysis?
RFM analysis adalah teknik segmentasi pelanggan berdasarkan tiga dimensi perilaku transaksi: Recency, Frequency, dan Monetary. Konsep ini sederhana: pelanggan yang baru belanja, sering belanja, dan menghabiskan banyak uang cenderung menjadi pelanggan terbaik dan paling loyal.
Kekuatan RFM terletak pada kesederhanaannya. Ia tidak memerlukan data demografis, survei kepuasan, atau fitur rumit — cukup data transaksi yang hampir semua bisnis sudah miliki. Anda bisa langsung menerapkan metode ini pada tabel orders/transaksi yang ada di database Anda.
Tiga Komponen Inti RFM
Berapa hari sejak transaksi terakhir? Makin kecil nilainya (makin baru) makin baik.
Berapa kali pelanggan bertransaksi dalam periode tertentu? Makin sering makin loyal.
Berapa total nilai transaksi? Pelanggan dengan nilai tinggi layak perlakuan istimewa.
Perhatikan satu hal penting: pada dimensi Recency, nilai yang lebih kecil justru lebih baik karena berarti pelanggan baru saja bertransaksi. Berbeda dengan Frequency dan Monetary yang nilainya lebih besar lebih baik. Perbedaan arah ini harus diperhitungkan saat memberi skor nanti.
⚙️ Alur Kerja RFM dalam 5 Langkah
- Hitung R, F, M per pelanggan — agregasi dari tabel transaksi menggunakan SQL.
- Bagi tiap komponen menjadi 5 kelas — gunakan kuartil atau fungsi NTILE agar setiap komponen memiliki skala 1–5.
- Beri skor 1–5 — pada Recency 5 berarti paling baru, pada Frequency dan Monetary 5 berarti paling tinggi.
- Gabung ketiga skor — kombinasi R, F, M membentuk “RFM cell” (misal 555, 511, 311).
- Petakan ke segmen — terjemahkan tiap cell menjadi segmen bernama seperti Champions, Loyal, atau At Risk.
🗄️ Langkah 1: Siapkan Data Transaksi (SQL)
Semua dimulai dari tabel transaksi. Untuk contoh, kita gunakan tabel transactions yang menyimpan setiap order. Berikut struktur DDL-nya:
Dan beberapa baris data contoh:
Dalam proyek nyata, biasanya Anda juga menambahkan kolom
order_status dan hanya menghitung transaksi yang berstatus completed. Untuk latihan, asumsikan semua baris di atas adalah transaksi berhasil.🧮 Langkah 2–3: Hitung R, F, M dan Beri Skor (SQL)
Pertama, kita hitung Recency, Frequency, dan Monetary untuk setiap pelanggan. Recency dihitung sebagai selisih hari antara tanggal terakhir transaksi dan tanggal acuan (misal tanggal hari ini atau tanggal maksimum di data).
Hasilnya terlihat seperti tabel di bawah ini (untuk memudahkan, kita gunakan tanggal acuan 2026-08-15):
| customer_id | recency (hari) | frequency | monetary |
|---|---|---|---|
| 501 | 5 | 3 | 640000 |
| 502 | 26 | 2 | 300000 |
| 503 | 61 | 2 | 125000 |
| 504 | 3 | 1 | 500000 |
Selanjutnya, kita ubah masing-masing komponen menjadi skor 1–5. Cara paling populer adalah fungsi window NTILE(5) yang membagi data menjadi 5 kelompok sama besar berdasarkan urutan nilai.
Ingat arah skornya: untuk Recency, nilai terkecil (paling baru) mendapat skor 5, sehingga kita urutkan ORDER BY recency ASC — artinya kelompok terbaru mendapat skor 5. Untuk Frequency dan Monetary, nilai terbesar mendapat skor 5, sehingga urutannya ORDER BY frequency DESC dan ORDER BY monetary DESC.
NTILE bekerja dengan membagi data menjadi kelompok berukuran sama. Jika jumlah pelanggan tidak habis dibagi 5, beberapa kelompok akan memiliki 1 baris lebih banyak. Untuk data kecil contoh ini, NTILE tetap berfungsi tetapi hasilnya kasar. Dalam data ribuan pelanggan, NTILE justru sangat stabil dan menjadi pilihan utama.
🏷️ Langkah 4–5: Gabung Skor Menjadi Segmen (SQL)
Setelah setiap pelanggan memiliki skor R, F, dan M, kita bisa menggabungkannya menjadi “RFM cell” seperti 555, 533, atau 311. Selanjutnya, kita petakan kombinasi tersebut menjadi segmen yang mudah dimengerti tim marketing menggunakan pernyataan CASE WHEN.
Perhatikan bahwa logika segmentasi di atas bersifat heuristik — bukan aturan baku. Anda bebas menyesuaikan ambang batas sesuai karakter bisnis. Skor r_score=5 dan f_score=5 jelas termasuk Champions, sedangkan r_score rendah menandakan pelanggan yang berisiko hilang.
🐍 Validasi & Analisis Lanjut dengan Python
SQL sudah menghasilkan segmen. Namun kadang Anda butuh analisis lebih dalam — distribusi skor, breakpoint kuartil yang jelas, hingga visualisasi. Di sinilah Python dengan pandas dan seaborn berperan, melanjutkan seri analisis SQL + Python kami.
Daripada menghitung agregasi di SQL lalu menyalin hasilnya manual, kita bisa menarik data mentah dari database, lalu menghitung RFM sepenuhnya di Python. Ini memberi kita kendali penuh atas cara menentukan breakpoint.
Mau Kuasai RFM Analysis: Segmentasi Pelanggan dengan SQL & Python Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
Pada Recency, kita balik labelnya ([5,4,3,2,1]) karena nilai terbaru (recency kecil) harus mendapat skor tinggi. Sementara pada Frequency dan Monetary label berjalan normal karena nilai besar mendapat skor tinggi.
Setelah mendapatkan skor, Anda bisa memetakan kombinasi skor ke segmen menggunakan fungsi kecil, lalu memvisualisasikan distribusinya:
Python lebih fleksibel ketika breakpoint skor Anda butuh kustomisasi (misal menggunakan persentil manual). Sebaliknya, SQL lebih unggul untuk produksi dan otomatisasi karena berjalan langsung di database. Kombinasikan keduanya: SQL untuk pipeline, Python untuk eksplorasi dan validasi.
📊 Ringkasan Segmen dan Aksi Bisnis
Segmen hanyalah kelompok — yang bermanfaat adalah aksi yang Anda ambil untuk tiap kelompok. Berikut ringkasan umum:
| Segmen | Karakteristik | Aksi Bisnis |
|---|---|---|
| Champions | Beli baru, sering, nominal besar. | Reward & program loyalitas, ajak jadi brand advocate/testimoni. |
| Loyal Customers | Sangat sering, nilai besar, sedikit tidak sebaru Champions. | Maintain engagement, upselling produk premium. |
| New Customers | Baru belanja pertama kali. | Onboarding, dorong pembelian kedua dengan voucher. |
| At Risk | Dulu sering beli, tapi lama tidak kembali. | Win-back campaign, diskon kejutan, email re-engagement. |
| Lost | Terakhir beli sudah sangat lama. | Evaluasi ulang; kurangi budget, biarkan bila tidak prospek. |
🎯 Kesimpulan
RFM analysis adalah alat segmentasi yang sederhana namun berdampak besar. Dengan tiga angka — Recency, Frequency, dan Monetary — Anda bisa membagi seluruh basis pelanggan menjadi kelompok yang bernilai berbeda, lalu memperlakukan masing-masing sesuai nilainya.
Kombinasi SQL dan Python menjadikan proses ini tangguh: SQL menangani komputasi dan pipelining langsung di database, sementara Python memberi fleksibilitas untuk eksplorasi dan validasi. Mulailah dari data transaksi yang sudah Anda miliki, dan Anda akan segera melihat pelanggan mana yang layak dipertahankan, dimanjakan, atau bahkan dilepas.
- Recency: makin baru makin baik (perhatikan arah skornya dibalik).
- Frequency & Monetary: makin besar makin baik.
- Skor 1–5 dengan NTILE di SQL atau qcut di Python.
- Gabung skor menjadi RFM cell lalu petakan ke segmen bernama.
- Tiap segmen butuh aksi bisnis yang berbeda agar segmentasi berdampak.
❓ FAQ: RFM Analysis
Apa arti singkatan RFM?
RFM adalah singkatan dari Recency (berapa baru pelanggan bertransaksi), Frequency (berapa sering bertransaksi), dan Monetary (berapa besar total nilai transaksinya). Ketiga dimensi ini menjadi dasar untuk mengelompokkan pelanggan.
Kapan sebaiknya RFM analysis digunakan?
RFM cocok untuk bisnis yang memiliki data transaksi berulang, seperti e-commerce, retail, dan layanan berlangganan. Metode ini kurang cocok untuk bisnis one-time purchase seperti menjual rumah atau kendaraan yang jarang dibeli ulang.
Apakah RFM butuh machine learning?
Tidak. RFM adalah metode berbasis aturan yang hanya butuh agregasi dan pengelompokan skor. Namun hasil segmen RFM sering digunakan sebagai fitur atau label untuk model machine learning lanjutan, misalnya prediksi churn.
Berapa banyak segmen yang ideal?
Tergantung kebutuhan. Dengan skor 1–5 ada hingga 125 kombinasi cell, tetapi kebanyakan bisnis memetakannya menjadi 5–11 segmen bernama agar mudah dieksekusi. Terlalu sedikit segmen terlalu kasar, terlalu banyak justru membingungkan tim marketing.
Apa bedanya RFM dengan clustering seperti K-Means?
RFM adalah metode berbasis aturan yang deterministik dan mudah dijelaskan, sedangkan clustering (misal K-Means) berbasis jarak yang otomatis mencari kelompok dalam data. RFM lebih transparan dan mudah diinterpretasikan, sementara clustering bisa menangkap pola yang lebih kompleks.
Dibuat oleh:
Mau Kuasai RFM Analysis: Segmentasi Pelanggan dengan SQL & Python Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
