Perbedaan CASE dan IF di SQL beserta contoh penggunaanya
4 minute read
Case dalam SQL
CASE adalah sebuah pernyataan pada bahasa SQL yang memungkinkan pengguna untuk menambahkan logika pada query yang dijalankan. Pernyataan ini memiliki struktur yang mirip dengan seleksi IF-THEN-ELSE pada bahasa pemrograman lain.
CASE dapat digunakan dalam beberapa situasi, seperti:
- Mengubah nilai dari sebuah kolom sesuai dengan kondisi yang ditentukan.
- Mengurutkan hasil query sesuai dengan kondisi yang ditentukan.
- Menentukan kolom yang akan ditampilkan dalam hasil query sesuai dengan kondisi yang ditentukan.
- Menentukan nilai yang akan digunakan dalam fungsi agregat (seperti AVG, SUM, MAX, dan MIN) sesuai dengan kondisi yang ditentukan.
CASE WHEN condition THEN result [WHEN ...] [ELSE result] END
Di sini, condition adalah kondisi yang akan diuji dan result adalah nilai yang akan dikembalikan jika kondisi tersebut bernilai benar. Kita dapat menambahkan beberapa WHEN untuk menguji beberapa kondisi yang berbeda. ELSE dapat digunakan untuk menentukan nilai yang akan dikembalikan jika tidak ada kondisi yang terpenuhi.
Contoh penggunaan CASE adalah sebagai berikut:
SELECT *, CASE WHEN score > 90 THEN 'A' WHEN score > 80 THEN 'B' WHEN score > 70 THEN 'C' ELSE 'F' END AS grade FROM tb_mahasiswa
Pada query di atas, kita menggunakan CASE untuk menambahkan kolom baru bernama grade ke tabel tb_mahasiswa. Kolom ini akan menampilkan nilai huruf yang sesuai dengan nilai score dari setiap siswa. Jika score lebih besar dari 90, maka grade akan bernilai A. Jika score lebih besar dari 80 tetapi tidak lebih besar dari 90, maka grade akan bernilai B, dan seterusnya. Jika tidak ada kondisi yang terpenuhi, maka grade akan bernilai F.
Kombinasi penggunaan CASE
Penggunaan CASE juga dapat dikombinasikan dengan fungsi lain dalam query SQL, seperti menggunakannya dalam fungsi agregat seperti AVG atau SUM untuk menghitung rata-rata atau total nilai tertentu. Sebagai contoh:SELECT AVG(CASE WHEN score > 90 THEN score ELSE NULL END) AS avg_high_score FROM tb_mahasiawa
Pada query di atas, kita menggunakan CASE dalam fungsi AVG untuk menghitung rata-rata nilai score yang lebih besar dari 90. Jika score kurang dari atau sama dengan 90, maka nilainya tidak akan dihitung dalam rata-rata karena ELSE bernilai NULL.
Perbedaan Case Dengan IF
Perbedaan utama antara CASE dan IF adalah bahwa CASE adalah sebuah pernyataan pada bahasa SQL sedangkan IF adalah sebuah pernyataan pada banyak bahasa pemrograman. Meskipun keduanya memiliki struktur yang mirip, perbedaan-perbedaan lainnya antara CASE dan IF adalah sebagai berikut:
Penggunaan
CASE biasanya digunakan dalam query SQL untuk menambahkan logika dan mengubah hasil yang dikembalikan oleh query.IF biasanya digunakan dalam bahasa pemrograman untuk mengeksekusi kode yang berbeda berdasarkan kondisi yang ditentukan.
Struktur
Struktur pernyataan CASE terdiri dari kata kunci CASE, beberapa blok WHEN-THEN-END, dan opsional blok ELSE-END.Struktur pernyataan IF terdiri dari kata kunci IF, kondisi yang akan diuji, blok kode yang akan dieksekusi jika kondisi bernilai benar, dan opsional blok ELSE yang akan dieksekusi jika kondisi bernilai salah.
Penulisan
CASE biasanya ditulis dengan menggunakan kapitalisasi seperti ini: CASE, THEN, ELSE, END.IF biasanya ditulis dengan menggunakan huruf kecil seperti ini: if, then, else, end. Namun, beberapa bahasa pemrograman juga menggunakan kapitalisasi seperti CASE.
Syntax
Syntax pernyataan CASE pada bahasa SQL cukup spesifik dan harus ditulis sesuai dengan struktur yang telah ditentukan.Syntax pernyataan IF pada bahasa pemrograman biasanya lebih fleksibel dan dapat ditulis dengan berbagai cara, tergantung pada bahasa yang digunakan.
Meskipun CASE dan IF memiliki beberapa perbedaan, keduanya berguna untuk menambahkan logika dalam sebuah query atau kode program. Penggunaan yang tepat tergantung pada konteks dan bahasa yang digunakan.
Menggabungkan CASE dan IF
Pernyataan CASE dan IF dapat digabungkan dalam query SQL untuk menambahkan logika yang lebih kompleks. Misalnya, kita dapat menggabungkan CASE dan IF seperti ini:SELECT*, IF(score > 90, CASE WHEN score > 95 THEN 'A+' ELSE 'A' END, CASE WHEN score > 80 THEN 'B' ELSE 'F' END) AS grade FROM tb_mahasiswaPada query di atas, kita menggunakan IF untuk menentukan apakah score lebih besar dari 90 atau tidak. Jika bernilai benar, maka kita menggunakan CASE lagi untuk menentukan nilai huruf yang sesuai dengan score. Jika score lebih besar dari 95, maka grade akan bernilai A+. Jika tidak, maka grade akan bernilai A. Jika score kurang dari atau sama dengan 90, maka kita menggunakan CASE lagi untuk menentukan nilai huruf yang sesuai dengan score. Jika score lebih besar dari 80, maka grade akan bernilai B. Jika tidak, maka grade akan bernilai F.
Penggunaan pernyataan CASE dan IF bisa menjadi sangat berguna untuk menambahkan logika yang kompleks pada query SQL. Namun, juga perlu diingat bahwa query yang terlalu kompleks dapat menjadi sulit dipahami dan dikelola, jadi pastikan untuk mempertimbangkan kebutuhan dan kompleksitas query saat menggabungkan CASE dan IF dalam query SQL.
Kesimpulan
Pernyataan CASE adalah sebuah pernyataan pada bahasa SQL yang memungkinkan pengguna untuk menambahkan logika pada query yang dijalankan. Pernyataan ini memiliki struktur yang mirip dengan seleksi IF-THEN-ELSE pada bahasa pemrograman lain, tetapi biasanya digunakan untuk menambahkan logika dan mengubah hasil yang dikembalikan oleh query SQL.Perbedaan utama antara CASE dan IF adalah bahwa CASE adalah sebuah pernyataan pada bahasa SQL sedangkan IF adalah sebuah pernyataan pada banyak bahasa pemrograman. Struktur, penulisan, dan syntax pernyataan CASE dan IF juga berbeda tergantung pada bahasa yang digunakan.
Pernyataan CASE dan IF dapat digabungkan dalam query SQL untuk menambahkan logika yang lebih kompleks, namun juga perlu diingat bahwa query yang terlalu kompleks dapat menjadi sulit dipahami dan dikelola.
Posting Komentar