Ekspresi CASE dalam SELECT
Tulis logika bersyarat sebaris serta bentuk CASE terpetakan dan sederhana.
Ekspresi CASE dalam SELECT adalah pelajaran Coding Interview Prep gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Coding Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Coding Interview Prep mencakup 4 pelajaran total.
CASE: Ekspresi Kondisional SQL
CASE adalah if/then/else milik SQL, tetapi CASE merupakan ekspresi yang menghasilkan satu nilai—jadi dapat digunakan di mana pun sebuah nilai dapat digunakan: SELECT, WHERE, ORDER BY, bahkan di dalam agregat.
SELECT order_id,
amount,
CASE WHEN amount > 100 THEN 'large' ELSE 'small' END AS size
FROM orders;Bentuk Searched CASE
Searched CASE memeriksa kondisi boolean pada setiap WHEN dan mengembalikan hasil pertama yang cocok. Ini adalah bentuk yang paling fleksibel, dan urutannya penting—kondisi benar yang pertama akan menang.
SELECT score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'F'
END AS grade
FROM exam_results;Bentuk Simple CASE
Simple CASE membandingkan satu ekspresi dengan daftar nilai. Bentuk ini lebih singkat untuk pemeriksaan kesamaan, tetapi tidak dapat menangani rentang atau pengujian NULL.
SELECT status_code,
CASE status_code
WHEN 1 THEN 'active'
WHEN 2 THEN 'paused'
WHEN 3 THEN 'closed'
ELSE 'unknown'
END AS status_label
FROM accounts;Searched vs Simple: Kapan Menggunakan Masing-Masing
Gunakan simple CASE untuk membandingkan kesamaan dengan nilai tetap, dan searched CASE untuk rentang atau NULL. Jebakan penting: simple CASE tidak pernah dapat mencocokkan NULL—gunakan IS NULL dalam bentuk searched.
-- Simple CASE will NOT catch NULL here
SELECT CASE WHEN bonus IS NULL THEN 'no bonus'
ELSE 'has bonus'
END AS bonus_flag
FROM employees;Urutan Cabang WHEN Itu Penting
Karena cabang pertama yang cocok akan digunakan, susun WHEN dari yang paling spesifik ke yang paling umum. Jika ambang batas yang terlalu umum diletakkan lebih dahulu, skor 95 dapat diberi label yang salah.
-- Correct order: highest threshold first
SELECT CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
ELSE 'C or below'
END AS grade
FROM exam_results;ELSE dan NULL Implisit
Jika tidak ada yang cocok dan Anda melewati ELSE, CASE mengembalikan NULL. Tambahkan ELSE secara eksplisit sebagai nilai bawaan agar nilai yang tidak terduga tidak diam-diam berubah menjadi NULL.
-- No ELSE: anything not 1/2 becomes NULL
SELECT CASE flag WHEN 1 THEN 'yes' WHEN 2 THEN 'no' END AS label
FROM toggles;Agregasi Kondisional (Pola Pivot)
Trik wawancara yang paling berharga: agregasi kondisional. Letakkan CASE di dalam SUM atau COUNT untuk menghitung jumlah baris per kategori dalam satu kali pemrosesan—laporan bergaya pivot yang rapi.
SELECT
SUM(CASE WHEN status = 'paid' THEN 1 ELSE 0 END) AS paid_orders,
SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) AS pending_orders,
SUM(CASE WHEN status = 'paid' THEN amount ELSE 0 END) AS paid_revenue
FROM orders;COUNT Mengabaikan NULL: Jalan Pintas dengan CASE
Karena COUNT mengabaikan NULL, Anda dapat menghilangkan ELSE sehingga baris yang tidak cocok menjadi NULL dan tidak dihitung. Ini adalah cara yang sedikit lebih singkat untuk melakukan penghitungan kondisional.
SELECT
COUNT(CASE WHEN status = 'paid' THEN 1 END) AS paid_orders,
COUNT(CASE WHEN status = 'pending' THEN 1 END) AS pending_orders
FROM orders;CASE dalam ORDER BY untuk Pengurutan Khusus
Letakkan CASE dalam ORDER BY untuk mengurutkan berdasarkan prioritas khusus, bukan urutan alfabetis atau numerik biasa—misalnya mendahulukan yang mendesak, kemudian normal, lalu yang lainnya.
SELECT order_id, status
FROM orders
ORDER BY
CASE status
WHEN 'urgent' THEN 1
WHEN 'normal' THEN 2
ELSE 3
END,
order_id;Konsistensi Tipe di antara Cabang
Semua cabang CASE harus mengembalikan tipe yang kompatibel. Mencampur angka dan string dapat menghasilkan kesalahan atau memaksa casting—pilih satu tipe keluaran dan lakukan casting secara eksplisit jika diperlukan.
-- Keep branches the same type
SELECT CASE WHEN qty > 0 THEN CAST(qty AS VARCHAR)
ELSE 'none'
END AS qty_label
FROM inventory;CASE dalam WHERE untuk Penyaringan Kondisional
CASE dalam WHERE memungkinkan Anda menerapkan logika penyaringan yang berbeda berdasarkan suatu penanda—misalnya ambang harga yang berbeda untuk setiap wilayah. Sering kali ini lebih rapi daripada rangkaian AND dan OR yang rumit.
SELECT order_id, amount, region
FROM orders
WHERE amount > CASE region
WHEN 'US' THEN 100
WHEN 'EU' THEN 90
ELSE 50
END;Uji Cepat
Prediksikan hasilnya.
Rangkuman
Rangkuman: CASE mengembalikan satu nilai dan dapat digunakan dalam SELECT, WHERE, ORDER BY, serta agregat. Searched menangani rentang dan NULL; kecocokan pertama yang digunakan; tidak ada kecocokan berarti NULL; pastikan tipe semua cabang kompatibel.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Ekspresi CASE dalam SELECT” gratis?
Ya — teks lengkap “Ekspresi CASE dalam SELECT” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Coding Interview Prep, upgrade ke CoddyKit PRO. Kursus Coding Interview Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Ekspresi CASE dalam SELECT”?
Tulis logika bersyarat sebaris serta bentuk CASE terpetakan dan sederhana. Kamu berlatih Coding Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Coding Interview Prep?
Tidak diperlukan pengalaman sebelumnya. Coding Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Ekspresi CASE dalam SELECT” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Coding Interview Prep ini?
Ya. Setiap pelajaran Coding Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Memproyeksikan Kolom dan Jebakan Alias
- Kolom Terhitung dan Prioritas Ekspresi
- DISTINCT vs GROUP BY untuk Keunikan
- Ekspresi CASE dalam SELECT