Main Logo
  • Home
  • About
  • Kursus
    • Paket Kursus
    • Roadmap Profesi
    • Data & AI
      • Data Analyst
      • Data Scientist
      • AI Engineer
      • Data Engineer
      • Business Intelligence (BI) Specialist
    • Infrastruktur & Keamanan
      • Network Engineer
      • System Engineer
      • DevOps Engineer
      • Security Engineer
      • Cloud Engineer
    • Programming & Web Development
      • Web & App Developer
      • Web Developer
      • WordPress Developer
      • Mobile Developer
    • Spesialisasi
      • Blockchain Engineer
      • IOT Engineer
      • Digital Marketing Specialist
  • Elearning
  • Blog
  • Portfolio
Daftar
Main Logo
  • Home
  • About
  • Kursus
    • Paket Kursus
    • Roadmap Profesi
    • Data & AI
      • Data Analyst
      • Data Scientist
      • AI Engineer
      • Data Engineer
      • Business Intelligence (BI) Specialist
    • Infrastruktur & Keamanan
      • Network Engineer
      • System Engineer
      • DevOps Engineer
      • Security Engineer
      • Cloud Engineer
    • Programming & Web Development
      • Web & App Developer
      • Web Developer
      • WordPress Developer
      • Mobile Developer
    • Spesialisasi
      • Blockchain Engineer
      • IOT Engineer
      • Digital Marketing Specialist
  • Elearning
  • Blog
  • Portfolio

CASE WHEN Bertingkat di SQL: Segmentasi Customer Berdasarkan Total Transaksi (VIP, Reguler, Baru)

  • August 21, 2026
  • oleh Siti Fatimah Nur Azzahra

CASE WHEN memungkinkan kita mengubah angka mentah seperti total_transaksi menjadi label kategori bisnis — VIP, Reguler, atau Baru — langsung di dalam satu query SQL, tanpa perlu proses manual di Excel atau tools terpisah. Artikel ini membahas cara menyusun CASE WHEN bertingkat untuk segmentasi customer, lengkap dengan contoh data, query, dan cara memvalidasi hasilnya.

VIP

Total transaksi ≥ Rp 10.000.000

Reguler

Total transaksi ≥ Rp 1.000.000

Baru

Daftar tahun 2025 ke atas

Kenapa Segmentasi Customer Ini Dibutuhkan?

Tim marketing sering butuh tahu siapa saja customer yang masuk kategori VIP untuk diprioritaskan dalam campaign, siapa yang Reguler untuk dijaga loyalitasnya, dan siapa yang Baru untuk didorong transaksi keduanya. Masalahnya, data mentah di database biasanya cuma berupa angka total_transaksi — tidak ada kolom yang langsung bilang “customer ini VIP”.

Ada beberapa cara untuk membuat label ini:

  1. Proses manual di Excel — rawan human error dan tidak scalable kalau datanya ribuan baris.
  2. Bikin tabel referensi terpisah — lebih rapi untuk aturan yang kompleks, tapi jadi overkill untuk aturan sederhana seperti ini.
  3. CASE WHEN langsung di SQL — cepat, langsung terintegrasi dengan query lain, dan aturan bisnisnya terlihat jelas di dalam query itu sendiri.

Untuk kasus segmentasi sederhana berdasarkan ambang batas angka, CASE WHEN adalah pilihan paling efisien karena tidak perlu maintain tabel tambahan.

Bagaimana Struktur Data Customer-nya?

Anggap kita punya tabel customers dengan struktur berikut (gunakan data dummy, jangan data pengguna asli):

Mau Kuasai CASE WHEN Bertingkat di SQL: Segmentasi Customer Berdasarkan Total Transaksi (VIP, Reguler, Baru) 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 →

KolomTipe DataKeterangan
idINTID unik customer
namaVARCHARNama customer (dummy)
total_transaksiINTTotal nilai transaksi (Rp)
tanggal_daftarDATETanggal customer mendaftar

Contoh isi data dummy:

CREATE TABLE customers (
    id INT PRIMARY KEY,
    nama VARCHAR(50),
    total_transaksi INT,
    tanggal_daftar DATE
);

INSERT INTO customers (id, nama, total_transaksi, tanggal_daftar) VALUES
(1, 'Customer A', 15000000, '2023-01-10'),
(2, 'Customer B', 3200000, '2024-05-22'),
(3, 'Customer C', 850000, '2025-06-01'),
(4, 'Customer D', 22000000, '2022-11-15'),
(5, 'Customer E', 500000, '2026-07-30');
Struktur tabel customers di SQL dengan kolom id, nama, total_transaksi, dan tanggal_daftar

Bagaimana Menulis Query CASE WHEN untuk Segmentasi?

Versi Dasar: Satu Kondisi

Mulai dari kondisi paling sederhana — menandai siapa yang VIP:

SELECT
    nama,
    total_transaksi,
    CASE
        WHEN total_transaksi >= 10000000 THEN 'VIP'
        ELSE 'Bukan VIP'
    END AS kategori
FROM customers;
Hasil query CASE WHEN dengan satu kondisi menampilkan kategori VIP dan Bukan VIP

Versi Bertingkat: Tiga Kategori

Selanjutnya kita perluas jadi tiga kategori: VIP, Reguler, dan Baru. Urutan kondisi di sini penting karena SQL mengevaluasi CASE WHEN dari atas ke bawah dan berhenti di kondisi pertama yang terpenuhi:

SELECT
    nama,
    total_transaksi,
    tanggal_daftar,
    CASE
        WHEN total_transaksi >= 10000000 THEN 'VIP'
        WHEN total_transaksi >= 1000000 THEN 'Reguler'
        WHEN tanggal_daftar >= DATE '2025-01-01' THEN 'Baru'
        ELSE 'Perlu Diaktivasi'
    END AS kategori
FROM customers;
Hasil query CASE WHEN bertingkat menampilkan kategori VIP, Reguler, dan Baru

Kenapa urutannya begitu: kondisi dengan ambang batas tertinggi (VIP) ditaruh paling atas. Kalau urutannya dibalik — misalnya kondisi Reguler ditaruh sebelum VIP — maka customer dengan total_transaksi 22 juta pun bisa salah kena label Reguler, karena SQL akan langsung mengambil kondisi pertama yang cocok tanpa mengecek kondisi selanjutnya.

Bagaimana Memvalidasi Hasilnya Benar?

Setelah query di atas jalan, validasi dengan menghitung jumlah customer di tiap kategori menggunakan subquery dan GROUP BY:

SELECT
    kategori,
    COUNT(*) AS jumlah_customer
FROM (
    SELECT
        CASE
            WHEN total_transaksi >= 10000000 THEN 'VIP'
            WHEN total_transaksi >= 1000000 THEN 'Reguler'
            WHEN tanggal_daftar >= DATE '2025-01-01' THEN 'Baru'
            ELSE 'Perlu Diaktivasi'
        END AS kategori
    FROM customers
) AS sub
GROUP BY kategori
ORDER BY jumlah_customer DESC;
Hasil validasi jumlah customer per kategori menggunakan GROUP BY

Cocokkan hasilnya secara manual dengan data mentah untuk 1-2 baris — misalnya cek langsung apakah Customer D (22 juta) memang muncul di kategori VIP dan bukan di kategori lain.

Apa Kesalahan Umum Saat Pakai CASE WHEN Bertingkat?

  1. Lupa menambahkan ELSE — kalau tidak ada baris yang cocok dengan semua kondisi WHEN, hasilnya akan NULL, bukan error. Ini sering lolos tanpa disadari.
  2. Urutan kondisi terbalik — kondisi dengan syarat lebih ketat (nilai lebih tinggi) harus ditaruh lebih dulu.
  3. Kondisi tumpang tindih tanpa disadari — kondisi kedua ternyata juga mencakup kasus yang seharusnya masuk kondisi pertama, sehingga sebagian data “tercuri” oleh kondisi yang salah.
  4. Membandingkan tipe data yang tidak sesuai — misalnya membandingkan tanggal_daftar (tipe DATE) dengan string biasa tanpa fungsi konversi, yang bisa menyebabkan hasil tidak konsisten tergantung database yang dipakai.

Kesimpulan

VIP · Reguler · Baru

CASE WHEN bertingkat adalah cara paling efisien untuk mengubah data numerik mentah menjadi label kategori bisnis langsung di level SQL, tanpa perlu tabel referensi tambahan untuk aturan yang sederhana. Kuncinya ada di urutan kondisi (dari yang paling ketat ke paling longgar) dan selalu menyertakan ELSE agar tidak ada data yang lolos tanpa kategori. Untuk aturan segmentasi yang jauh lebih kompleks atau sering berubah, sebaiknya pindah ke tabel referensi terpisah agar lebih mudah di-maintain.


Penulis : Siti Fatimah Nur Azzahra

Mau Kuasai CASE WHEN Bertingkat di SQL: Segmentasi Customer Berdasarkan Total Transaksi (VIP, Reguler, Baru) 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 →

Tags: Business QuestioncasewhenCustomer Segmentationdata analysisdata analystDatabaseQuery SQLsegmentasi customersqlSQL Tutorial
Previous Post

Post comment

Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • CASE WHEN Bertingkat di SQL: Segmentasi Customer Berdasarkan Total Transaksi (VIP, Reguler, Baru)
  • Mengenal Outlier: Data yang Berbeda dari Pola Umumnya
  • Cara Membersihkan Data Log Jaringan Menggunakan Python
  • Business Question: Cara Menyusun Pertanyaan Data yang Tajam
  • Cara Menjawab Business Question dengan Kombinasi SQL dan Python

Arsip

  • August 2026
  • July 2026
  • June 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • September 2025
  • August 2025
  • July 2025
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • December 2017
  • November 2017
  • October 2017
  • September 2017
  • August 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016
  • August 2016
  • July 2016
  • June 2016
  • May 2016
  • April 2016
  • March 2016
  • February 2016
  • January 2016
  • December 2015
  • November 2015
  • October 2015
  • September 2015
  • August 2015
  • July 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • February 2014
  • January 2014
  • December 2013
  • November 2013
  • October 2013
  • September 2013
  • August 2013
  • July 2013
  • June 2013
  • May 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • December 2011
  • November 2011

Tags

apache web server dns server kursus android kursus database kursus dns dan web server kursus dns server kursus ethical hacking kursus hacking kursus jaringan kursus jaringan linux Kursus Komputer kursus komputer di solo kursus komputer di solo / surakarta kursus komputer di surakarta kursus linux Kursus Linux Forensics kursus linux networking kursus linux security kursus linux server kursus mikrotik kursus networking kursus network security kursus php Kursus PHP dan MySQL kursus php mysql kursus proxy kursus security kursus ubuntu kursus ubuntu server kursus web kursus web security kursus web server kursus wordpress kursus wordpress theme linux MySQL pelatihan komputer di solo PHP python security training komputer training komputer di solo tutorial php ubuntu wordpress

© Edusoft Center - Kursus Komputer di Solo | 2010 - 2026 | Privacy Policy | Site Map | Portfolio Magang | Butuh tim kami langsung yang mengerjakan? Lihat layanan implementasi →

All Right Reserved

WhatsApp us