CASE Tersearched vs Sederhana
Dua cara menulis CASE.
CASE Tersearched vs Sederhana adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Dua Cara Menulis CASE
SQL menyediakan dua varian ekspresi CASE: CASE sederhana dan CASE berbasis kondisi. Keduanya mengembalikan nilai berdasarkan kondisi, tetapi berbeda dalam cara kondisi tersebut ditulis.
Di akhir pelajaran ini, Anda akan mengetahui kapan harus menggunakan setiap bentuk dan cara menghindari kesalahan umum saat tertukar di antara keduanya.
CASE Sederhana — Gagasannya
CASE sederhana membandingkan satu ekspresi dengan daftar nilai. Anggaplah ini seperti tabel pencarian: Anda memilih satu kolom atau nilai di sebelah kiri, lalu mencantumkan nilai yang sama dengannya dalam setiap cabang WHEN.
Sintaks: CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ELSE default END
SELECT
product_name,
category_id,
CASE category_id
WHEN 1 THEN 'Electronics'
WHEN 2 THEN 'Clothing'
WHEN 3 THEN 'Books'
ELSE 'Other'
END AS category_name
FROM products;CASE Sederhana dalam Praktik
Di sini, ekspresi CASE berada tepat setelah kata kunci, dan kolom status dibandingkan dengan setiap nilai WHEN menggunakan kesetaraan. Perhatikan bahwa Anda tidak menulis status = dalam cabang WHEN—perbandingannya sudah tersirat.
SELECT
order_id,
status,
CASE status
WHEN 'pending' THEN 'Awaiting payment'
WHEN 'paid' THEN 'Payment received'
WHEN 'shipped' THEN 'On its way'
WHEN 'delivered' THEN 'Completed'
ELSE 'Unknown status'
END AS status_label
FROM orders;CASE Berbasis Kondisi — Gagasannya
CASE berbasis kondisi tidak memiliki ekspresi tepat setelah kata kunci CASE. Sebagai gantinya, setiap cabang WHEN berisi kondisi logis lengkap. Hal ini membuatnya jauh lebih fleksibel: Anda dapat menggabungkan kolom yang berbeda, menggunakan pemeriksaan rentang, atau memanggil fungsi di dalam setiap WHEN.
Sintaks: CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE default END
SELECT
employee_name,
salary,
CASE
WHEN salary < 30000 THEN 'Entry Level'
WHEN salary < 60000 THEN 'Mid Level'
WHEN salary < 100000 THEN 'Senior'
ELSE 'Executive'
END AS salary_band
FROM employees;CASE Berbasis Kondisi dalam Praktik
Karena setiap WHEN menerima ekspresi logis apa pun, Anda dapat menggabungkan beberapa kolom dalam satu cabang. Basis data mengevaluasi klausa WHEN dari atas ke bawah dan mengembalikan hasil dari cabang pertama yang bernilai TRUE.
SELECT
product_name,
stock,
price,
CASE
WHEN stock = 0 THEN 'Out of stock'
WHEN stock < 10 AND price > 100 THEN 'Low stock — premium item'
WHEN stock < 10 THEN 'Low stock'
ELSE 'In stock'
END AS availability
FROM products;Perbedaan Struktur Utama
Tabel di bawah ini merangkum perbedaan intinya:
CASE sederhana — satu ekspresi setelah CASE, setiap WHEN memeriksa kesetaraan dengan ekspresi tersebut.
CASE berbasis kondisi — tidak ada ekspresi setelah CASE, setiap WHEN merupakan kondisi logis yang berdiri sendiri.
Karena CASE sederhana hanya melakukan pemeriksaan kesetaraan, bentuk ini tidak dapat menangani rentang, NULL, atau kondisi yang melibatkan beberapa kolom. Untuk kebutuhan selain pencocokan nilai langsung, gunakan CASE berbasis kondisi.
-- Simple CASE: equality only
SELECT CASE day_number
WHEN 1 THEN 'Monday'
WHEN 2 THEN 'Tuesday'
ELSE 'Other'
END AS day_name
FROM schedule;
-- Searched CASE: any condition
SELECT CASE
WHEN day_number BETWEEN 1 AND 5 THEN 'Weekday'
WHEN day_number IN (6, 7) THEN 'Weekend'
END AS day_type
FROM schedule;Penanganan NULL — Alasan CASE Berbasis Kondisi Lebih Unggul
CASE sederhana menggunakan = secara internal, dan NULL = NULL tidak pernah bernilai TRUE dalam SQL. Jadi, CASE sederhana tidak dapat mencocokkan kolom yang bernilai NULL. CASE berbasis kondisi memungkinkan Anda menulis WHEN column IS NULL THEN ..., yang bekerja dengan benar.
-- Simple CASE: NULL branch never matches
SELECT CASE manager_id
WHEN NULL THEN 'No manager' -- this will NEVER fire
ELSE 'Has manager'
END
FROM employees;
-- Searched CASE: correct NULL check
SELECT CASE
WHEN manager_id IS NULL THEN 'No manager'
ELSE 'Has manager'
END AS manager_status
FROM employees;Menggabungkan Kolom dalam CASE Berbasis Kondisi
Salah satu keunggulan utama CASE berbasis kondisi adalah setiap cabang WHEN dapat merujuk ke kolom yang sepenuhnya berbeda atau memanggil fungsi. Dengan demikian, Anda dapat menyatakan aturan bisnis yang kompleks dan sama sekali tidak dapat ditangani oleh CASE sederhana.
SELECT
customer_name,
total_orders,
total_spent,
CASE
WHEN total_spent > 10000 AND total_orders > 20 THEN 'VIP'
WHEN total_spent > 5000 THEN 'Gold'
WHEN total_orders > 10 THEN 'Silver'
ELSE 'Standard'
END AS tier
FROM customers;Menggunakan CASE dalam ORDER BY
Kedua bentuk CASE dapat digunakan di dalam ORDER BY untuk membuat urutan pengurutan khusus yang tidak ada dalam data. Di sini, CASE sederhana memetakan nama prioritas ke angka sehingga baris diurutkan berdasarkan urutan prioritas bisnis, bukan secara alfabetis.
SELECT ticket_id, subject, priority
FROM support_tickets
ORDER BY
CASE priority
WHEN 'critical' THEN 1
WHEN 'high' THEN 2
WHEN 'medium' THEN 3
WHEN 'low' THEN 4
ELSE 5
END ASC;CASE di Dalam Fungsi Agregat
Membungkus CASE berbasis kondisi di dalam SUM atau COUNT adalah pola klasik untuk agregasi kondisional—terkadang disebut tabel silang. Pola ini memungkinkan Anda menghasilkan beberapa total kategori dalam satu pemindaian, bukan menjalankan beberapa kueri.
SELECT
department,
COUNT(*) AS total_employees,
SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS female_count,
SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS male_count,
SUM(CASE WHEN salary > 70000 THEN salary ELSE 0 END) AS high_earner_payroll
FROM employees
GROUP BY department;Memilih Bentuk yang Tepat
Berikut aturan praktisnya:
Gunakan CASE sederhana ketika Anda memetakan satu kolom ke sekumpulan nilai tetap yang telah diketahui—bentuk ini lebih singkat dan lebih mudah dibaca.
Gunakan CASE berbasis kondisi untuk kebutuhan lainnya: rentang, pemeriksaan NULL, logika beberapa kolom, atau pemanggilan fungsi di dalam kondisi.
Jika ragu, CASE berbasis kondisi selalu dapat digunakan. Anda bahkan dapat menulis ulang CASE sederhana apa pun menjadi CASE berbasis kondisi—tetapi tidak sebaliknya.
-- These two queries return identical results
-- Simple CASE (concise for equality)
SELECT CASE region_code
WHEN 'US' THEN 'United States'
WHEN 'UK' THEN 'United Kingdom'
ELSE 'International'
END AS region_name
FROM sales;
-- Equivalent Searched CASE
SELECT CASE
WHEN region_code = 'US' THEN 'United States'
WHEN region_code = 'UK' THEN 'United Kingdom'
ELSE 'International'
END AS region_name
FROM sales;Pemeriksaan Singkat
Uji pemahaman Anda tentang CASE sederhana dan CASE berbasis kondisi.
Ringkasan Pelajaran
Berikut yang telah Anda pelajari dalam pelajaran ini:
CASE sederhana — letakkan satu ekspresi setelah CASE; setiap WHEN memeriksa apakah ekspresi tersebut sama dengan nilai tertentu. Paling sesuai untuk memetakan satu kolom ke daftar label tetap.
CASE berbasis kondisi — tidak ada ekspresi setelah CASE; setiap WHEN berisi kondisi logis lengkap. Mendukung rentang, pemeriksaan NULL, logika beberapa kolom, dan pemanggilan fungsi.
Kedua bentuk mengevaluasi cabang dari atas ke bawah dan mengembalikan hasil dari cabang pertama yang bernilai TRUE. Jika tidak ada cabang yang cocok dan tidak ada ELSE, hasilnya adalah NULL. Untuk fleksibilitas maksimum, CASE berbasis kondisi selalu menjadi pilihan yang aman—bentuk ini dapat melakukan semua hal yang dapat dilakukan CASE sederhana, bahkan lebih banyak.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “CASE Tersearched vs Sederhana” gratis?
Ya — teks lengkap “CASE Tersearched vs Sederhana” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “CASE Tersearched vs Sederhana”?
Dua cara menulis CASE. Kamu berlatih SQL Academy 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 SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy 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 2 dari 4.
Berapa lama pelajaran “CASE Tersearched vs Sederhana” 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 SQL Academy ini?
Ya. Setiap pelajaran SQL Academy 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
- Ekspresi CASE
- CASE Tersearched vs Sederhana
- Mengelompokkan dan Memberi Label Data
- CASE dalam ORDER BY dan Agregat