Menghitung Conversion Rate dengan SQL
Blog/Tutorial SQL/Menghitung Conversion Rate dengan SQL

Menghitung Conversion Rate dengan SQL

BimaBima
·16 September 2026·8 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Conversion rate adalah persentase pengunjung yang menyelesaikan aksi target, misalnya beli. Di SQL, kamu hitung dengan membagi jumlah yang konversi dengan total pengunjung lalu dikali 100, pakai kombinasi COUNT dan CASE WHEN atau FILTER. Selalu pakai NULLIF di pembagi biar aman dari error bagi nol.

Conversion rate adalah persentase pengunjung yang nyelesaiin aksi target, misalnya beli produk. Di SQL, kamu hitung dengan bagi jumlah yang beli sama total pengunjung, lalu kali 100. Rumus intinya: order / pengunjung * 100.

Angka ini yang dipakai buat nilai seberapa efektif sebuah channel atau halaman. Naik dari 2% ke 3% keliatan kecil, tapi itu 50% lebih banyak penjualan dari trafik yang sama.

Aku tunjukin query dasarnya, cara pecah per channel, sama jebakan bagi nol yang sering bikin hasilnya salah.

Apa itu conversion rate dalam SQL?

Conversion rate adalah rasio antara jumlah aksi yang berhasil sama total kesempatan, ditulis dalam persen. Di SQL, kamu ngitungnya dengan ngebagi hasil COUNT dari baris yang memenuhi syarat dengan COUNT total, lalu dikali 100. Aksi target bisa apa aja: beli, daftar, klik, atau isi form.

Yang penting kamu tentuin dulu dua hal: apa yang dihitung sebagai konversi, dan apa yang dihitung sebagai total. Salah nentuin penyebut bikin angkanya nggak bisa dibandingin.

Gimana rumus conversion rate?

Rumusnya sederhana: jumlah konversi dibagi jumlah pengunjung, dikali 100. Kalau 30 dari 1.000 pengunjung beli, conversion rate-nya 3%.

Conversion Rate = (Jumlah Konversi / Total Pengunjung) x 100

Di SQL, tantangannya ada di dua tempat. Pertama, ngitung baris bersyarat pakai CASE WHEN atau FILTER. Kedua, mastiin pembagiannya nghasilin desimal, bukan integer yang kebulet jadi 0.

Cara menghitung conversion rate dengan SQL

Anggap kamu punya tabel sessions dengan satu baris per kunjungan, dan kolom is_order bernilai true kalau kunjungan itu berujung beli. Query dasarnya:

SELECT
  COUNT(*) AS total_sesi,
  SUM(CASE WHEN is_order THEN 1 ELSE 0 END) AS total_order,
  ROUND(
    SUM(CASE WHEN is_order THEN 1 ELSE 0 END) * 100.0
    / NULLIF(COUNT(*), 0),
  2) AS conversion_rate
FROM sessions;

Ada tiga bagian penting di sini. CASE WHEN ngubah kondisi jadi 1 atau 0, lalu SUM ngejumlahin yang 1. Perkalian dengan 100.0 mastiin hasilnya desimal. COUNT di penyebut ngitung total baris.

Kalau database kamu PostgreSQL, ada versi yang lebih bersih pakai klausa FILTER:

SELECT
  ROUND(
    COUNT(*) FILTER (WHERE is_order) * 100.0
    / NULLIF(COUNT(*), 0),
  2) AS conversion_rate
FROM sessions;

FILTER cuma ngitung baris yang lolos kondisi. Hasilnya sama, tapi lebih gampang dibaca sekali lihat.

Cara hitung conversion rate per channel

Angka total berguna, tapi yang bikin keputusan adalah pecahan per channel. Tambahin GROUP BY buat lihat channel mana yang paling efektif:

SELECT
  channel,
  COUNT(*) AS sesi,
  SUM(CASE WHEN is_order THEN 1 ELSE 0 END) AS order_count,
  ROUND(
    SUM(CASE WHEN is_order THEN 1 ELSE 0 END) * 100.0
    / NULLIF(COUNT(*), 0),
  2) AS conversion_rate
FROM sessions
GROUP BY channel
ORDER BY conversion_rate DESC;

Sekarang kamu bisa lihat channel mana yang ngasih trafik paling berkualitas, bukan cuma paling banyak. Channel dengan sesi sedikit tapi conversion rate tinggi kadang lebih berharga dari channel rame yang jarang beli.

Contoh kasus: toko_berkah jualan online

Anggap toko_berkah, UMKM sembako, jualan lewat tiga channel: Instagram, WhatsApp broadcast, sama marketplace. Kamu jalanin query per channel dan dapat hasil ini:

ChannelSesiOrderConversion Rate
WhatsApp Broadcast820506,10%
Marketplace2.400964,00%
Instagram3.100872,81%

Instagram bawa trafik paling banyak, tapi conversion rate-nya paling rendah. WhatsApp broadcast bawa trafik paling sedikit, tapi tiap kunjungan dua kali lebih mungkin berujung beli.

Insight ini nyetir keputusan. Kalau budget iklan mau ditambah, WhatsApp yang paling worth digenjot, bukan Instagram yang keliatan rame tapi tipis hasilnya.

Kesalahan umum waktu hitung conversion rate

Kesalahan pertama: lupa perkalian desimal. Nulis total_order / COUNT(*) tanpa 100.0 bikin hasilnya kebulet jadi 0 karena pembagian integer. Selalu kali dengan 100.0.

Kesalahan kedua: nggak jaga bagi nol. Kalau ada grup tanpa pengunjung, penyebut jadi 0 dan query error. Bungkus penyebut pakai NULLIF(COUNT(*), 0).

Kesalahan ketiga: campur satuan penyebut. Ngitung konversi per user tapi penyebutnya per sesi bikin angkanya nggak masuk akal. Samain: kalau pembilang DISTINCT user, penyebut juga DISTINCT user.

Pertanyaan yang sering muncul soal conversion rate SQL

Pakai SUM CASE WHEN atau COUNT FILTER lebih bagus?

Dua-duanya benar. COUNT dengan FILTER lebih ringkas dan gampang dibaca, tapi cuma ada di PostgreSQL dan beberapa database modern. SUM dengan CASE WHEN jalan di hampir semua database termasuk MySQL lama. Kalau kamu mau query yang portabel, pakai SUM CASE WHEN.

Gimana hitung conversion rate antar dua tabel terpisah?

Kalau pengunjung dan order ada di tabel berbeda, pakai subquery. Contoh: SELECT (SELECT COUNT(DISTINCT user_id) FROM orders) * 100.0 / NULLIF((SELECT COUNT(DISTINCT user_id) FROM visits), 0). Pastikan keduanya ngitung entitas yang sama, biasanya user unik.

Berapa conversion rate yang dianggap bagus?

Nggak ada angka ajaib. Rata-rata e-commerce ada di 1% sampai 3%, tapi ini beda jauh antar industri dan channel. Yang lebih berguna adalah bandingin conversion rate kamu antar waktu dan antar channel, bukan sama patokan umum yang belum tentu relevan.

Kesimpulan

Menghitung conversion rate dengan SQL intinya bagi jumlah konversi sama total pengunjung, dikali 100.0, dengan NULLIF di penyebut. Pecah per channel pakai GROUP BY buat tau mana yang paling efektif.

Mau lanjut ke metrik lain? Baca cara hitung Average Order Value buat lihat nilai tiap transaksi, atau bounce rate dengan SQL buat lihat sisi kegagalannya.

Referensi soal fungsi agregat dan FILTER ada di dokumentasi PostgreSQL. Latihan query kayak gini langsung di browser lewat NgulikSQL, tanpa install database.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

Composite Index di SQL: Cara Kerja dan Urutan Kolom
Tutorial SQL
8 Oktober 2026•8 menit baca

Composite Index di SQL: Cara Kerja dan Urutan Kolom

Composite index itu index atas beberapa kolom sekaligus. Urutan kolomnya nentuin query mana yang kebantu, lewat aturan leftmost prefix.

BimaBima
Menghitung Stickiness (DAU/MAU) di SQL
Tutorial SQL
5 Oktober 2026•10 menit baca

Menghitung Stickiness (DAU/MAU) di SQL

Stickiness ngukur seberapa sering user balik lagi. Ini cara hitung DAU, MAU, dan rasio stickiness pakai SQL, plus contoh aplikasi UMKM.

BimaBima
Menghitung DAU dan MAU dengan SQL
Tutorial SQL
3 Oktober 2026•9 menit baca

Menghitung DAU dan MAU dengan SQL

DAU dan MAU dua metrik wajib buat produk digital. Ini cara hitungnya pakai SQL, lengkap query DISTINCT, per bulan, sampai rasio stickiness.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore