CASE & IF: Logika "Kalau-Maka" di Dalam Query

Membuat kolom berlogika dengan CASE WHEN dan IF: kategori otomatis, label status, dan pengelompokan nilai langsung dari SQL.

Part 19 dari 38 ± 35 menit Gratis

Kapan butuh logika di dalam query?

Data mentah sering perlu "diterjemahkan": stok 0 → "Habis", nilai 85 → "A", harga di atas 20.000 → "Premium". Daripada menunggu aplikasi mengolahnya, kamu bisa melakukannya langsung di SQL dengan CASE.

CASE WHEN: bercabang banyak

CASE
  WHEN kondisi1 THEN hasil1
  WHEN kondisi2 THEN hasil2
  ELSE hasil_lain
END
SELECT nama, stok,
  CASE
    WHEN stok = 0  THEN 'Habis'
    WHEN stok < 20 THEN 'Menipis'
    ELSE 'Aman'
  END AS status_stok
FROM produk;
+---------------------+------+-------------+
| nama                | stok | status_stok |
+---------------------+------+-------------+
| Kopi Susu Gula Aren |   50 | Aman        |
| Mie Goreng          |    0 | Habis       |
| Pisang Keju         |   20 | Aman        |
...

MySQL memeriksa WHEN dari atas ke bawah dan berhenti di yang pertama benar. Karena itu urutannya penting: letakkan syarat paling khusus di atas. Jika tidak ada ELSE dan semua WHEN salah, hasilnya NULL.

CASE bentuk "pencocokan nilai"

SELECT nama,
  CASE status
    WHEN 'lunas'    THEN 'Selesai'
    WHEN 'menunggu' THEN 'Belum dibayar'
    ELSE 'Dibatalkan'
  END AS keterangan
FROM pesanan;

IF(): jalan pintas untuk dua pilihan

IF(kondisi, hasil_jika_benar, hasil_jika_salah)

SELECT nama, IF(harga >= 20000, 'Premium', 'Reguler') AS kelas FROM produk;

Dua pilihan saja? IF lebih ringkas. Tiga pilihan atau lebih? Pakai CASE. (IF khas MySQL; CASE berlaku di semua database.)

CASE di tempat lain

  • ORDER BY: urutan khusus, mis. status "menunggu" tampil dulu: ORDER BY CASE status WHEN 'menunggu' THEN 0 ELSE 1 END.
  • Agregat: menghitung bersyarat, mis. SUM(CASE WHEN status='lunas' THEN 1 ELSE 0 END) (dipakai terus di laporan).
  • UPDATE: UPDATE produk SET harga = CASE WHEN stok < 10 THEN harga + 1000 ELSE harga END;

Tips menulis: sejajarkan WHEN dan THEN satu per baris seperti contoh di atas. CASE yang ditulis rapi mudah dibaca seperti daftar aturan; yang ditulis satu baris panjang cepat jadi teka-teki.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X