top of page
SQL Case: Panduan Lengkap untuk Pemula dalam Analisis Data
SQL CASE adalah statement yang bisa kamu pakai untuk menjalankan operasi kondisional (jika-maka). Bagaimana cara dan contoh penggunaannya?
Data Analytics
RevoU Staff
data analyst, kamu tentu sering berurusan dengan berbagai jenis Salah satu Di artikel ini, kita akan membahas pengertian dan contoh penggunaan SQL CASE. Yuk, simak!
SQL CASE adalah pernyataan dalam SQL yang memungkinkan query SQL. Mirip dengan pernyataanBerikut adalah sintaks dasar dari SQL CASE:
Kita memiliki tabel "OrderDetails" dengan kolom OrderID, ProductID, dan Quantity. Selanjutnya, kita ingin menambahkan kolom baru "QuantityText" yang menggambarkan jumlah produk dalam teks.
quantity lebih dari 30, kolom QuantityText akan menampilkan 'Jumlah lebih dari 30'.
quantity sama dengan 30, kolom QuantityText akan menampilkan 'Jumlah adalah 30'.
Berdasarkan nilai
output-nya akan ditampilkan sebagai berikut:
Pernyataan CASE akan memeriksa kondisi WHEN dari atas ke bawah dan akan mengembalikan nilai untuk kondisi benar pertama yang ditemukannya. Jadi, pastikan kondisi dalam klausa WHEN tidak tumpang tindih alias beberapa kondisi yang bisa benar pada saat yang sama.
query berikut:Hal ini bisa menjadi masalah jika kamu mengharapkan 'Sedang' untuk nilai antara 11 dan 20, dan 'Banyak' untuk nilai di atas 20, karena SQL akan memilih 'Banyak' untuk semua nilai di atas 20, bukan hanya nilai di atas 30.
Jika tidak ada kondisi WHEN yang cocok dan kamu tidak menentukan klausa ELSE, maka CASE akan menghasilkan NULL. Karena itu alangkah baiknya untuk selalu menambahkan klausa ELSE untuk memproses pernyataan yang tidak memenuhi kondisi WHEN.Products dengan kolom Price. Kita ingin membuat kolom baru, output yang dikembalikan akan tampak seperti di bawah ini:PriceRange akan bernilai NULL.
OutputJadi, dengan menambahkan klausa ELSE, kita memastikan bahwa setiap baris akan memiliki nilai untuk kolom Misalkan kita memiliki tabel ProductID (Price (PriceInfo, yang menampilkan informasi harga dalam teks jika harga lebih dari 5000, dan menampilkan harga asli jika harga kurang dari atau sama dengan 5000.query SQL-nya:query ini akan menyebabkan integer (Untuk memperbaiki ini, kita bisa mengubah Price akan dikonversi ke teks jika harga kurang dari atau sama dengan 5000, sehingga PriceInfo berisi teks 'Harga lebih dari 5000' untuk produk dengan harga lebih dari 5000, dan berisi harga asli (dikonversi ke teks) untuk produk dengan harga kurang dari atau sama dengan 5000.Dalam penerapannya, SQL CASE bisa digunakan bersamaan dengan fungsi agregat seperti COUNT, SUM, AVG, dan lain-lain.
#1 COUNT
Outputoutput ini, kita dapat melihat bahwa ada 125 pesanan denganquantity yang sama dengan 30, dan 245 pesanan dengan SQL CASE juga bisa digunakan bersama fungsi SUM untuk mencari total Outputoutput ini, kita dapat melihat bahwa totalquantity pesanan yang sama dengan 30 adalah 900, dan total SQL CASE juga bisa digunakan bersamaan dengan AVG untuk mencari nilai rata-rata. Masih dengan contoh tabel yang sama, kita akan mencari rata-rata pesanan yang lebih dari 30, sama dengan 30, dan kurang dari 30.SyntaxOutput output ini, kita dapat melihat bahwa rata-rataPenggunaan SQL CASE saat Menggabungkan Tabel
join atau penggabungan antar tabel. Customers dan join antara kedua tabel tersebut berdasarkan kondisi yang kompleks pada kolom OrderDate.Syntax{{COMPONENT_IDENTIFIER}}Dalam contoh ini, kita mengambil semua kolom (*) dari tabel Customers dan Orders yang memenuhi kondisi join yang ditentukan. Maka salah satu contoh adalah:Outputoutput ini, kita melihat beberapa kolom yang diambil dari tabel Orders berdasarkan kondisi join tersebut ditampilkan dalam hasil output ini mungkin berbeda tergantung pada struktur tabel dan kolom yang sebenarnya digunakan dalam Output ini hanya bertujuan untuk memberikan ilustrasi umum tentang tampilan hasil yang dapat diharapkan dari contohjoin antar tabel.Klausa FILTER sebenarnya hanya tersedia dalam beberapa database.
database tersebut.Misalkan kita memiliki tabel "Orders" dengan kolom "OrderID" dan "Quantity". Kita ingin menghitung jumlah pesanan yang lebih dari 30, sama dengan 30, dan kurang dari 30 menggunakan klausa FILTER.
Contoh hasil output ini, kita dapat melihat jumlah pesanan yang lebih dari 30 adalah 125, jumlah pesanan yang sama dengan 30 adalah 30, dan jumlah pesanan yang kurang dari 30 adalah 245.Kesimpulan
query SQL, memeriksa kondisi satu per satu, dan mengembalikan nilai berdasarkan kondisi yang cocok.multiple, penggunaan klausa ELSE untuk menangani kasus lainnya, dan pentingnya memastikan tipe data hasil dari THEN dan ELSE sama. FAQs
#1 Apakah SQL CASE WHEN hanya berlaku untuk kondisi numerik?
string atau tanggal.
#2 Apakah SQL CASE WHEN terbatas pada satu kolom saja?
query, termasuk dalam
lebih dari 30, kolom QuantityText akan menampilkan 'Jumlah lebih dari 30'.
quantity sama dengan 30, kolom QuantityText akan menampilkan 'Jumlah adalah 30'.
Berdasarkan nilai
output-nya akan ditampilkan sebagai berikut:
Pernyataan CASE akan memeriksa kondisi WHEN dari atas ke bawah dan akan mengembalikan nilai untuk kondisi benar pertama yang ditemukannya. Jadi, pastikan kondisi dalam klausa WHEN tidak tumpang tindih alias beberapa kondisi yang bisa benar pada saat yang sama.
query berikut:Hal ini bisa menjadi masalah jika kamu mengharapkan 'Sedang' untuk nilai antara 11 dan 20, dan 'Banyak' untuk nilai di atas 20, karena SQL akan memilih 'Banyak' untuk semua nilai di atas 20, bukan hanya nilai di atas 30.
Jika tidak ada kondisi WHEN yang cocok dan kamu tidak menentukan klausa ELSE, maka CASE akan menghasilkan NULL. Karena itu alangkah baiknya untuk selalu menambahkan klausa ELSE untuk memproses pernyataan yang tidak memenuhi kondisi WHEN.Products dengan kolom Price. Kita ingin membuat kolom baru, output yang dikembalikan akan tampak seperti di bawah ini:PriceRange akan bernilai NULL.
OutputJadi, dengan menambahkan klausa ELSE, kita memastikan bahwa setiap baris akan memiliki nilai untuk kolom Misalkan kita memiliki tabel ProductID (Price (PriceInfo, yang menampilkan informasi harga dalam teks jika harga lebih dari 5000, dan menampilkan harga asli jika harga kurang dari atau sama dengan 5000.query SQL-nya:query ini akan menyebabkan integer (Untuk memperbaiki ini, kita bisa mengubah Price akan dikonversi ke teks jika harga kurang dari atau sama dengan 5000, sehingga PriceInfo berisi teks 'Harga lebih dari 5000' untuk produk dengan harga lebih dari 5000, dan berisi harga asli (dikonversi ke teks) untuk produk dengan harga kurang dari atau sama dengan 5000.Dalam penerapannya, SQL CASE bisa digunakan bersamaan dengan fungsi agregat seperti COUNT, SUM, AVG, dan lain-lain.
#1 COUNT
Outputoutput ini, kita dapat melihat bahwa ada 125 pesanan denganquantity yang sama dengan 30, dan 245 pesanan dengan SQL CASE juga bisa digunakan bersama fungsi SUM untuk mencari total Outputoutput ini, kita dapat melihat bahwa totalquantity pesanan yang sama dengan 30 adalah 900, dan total SQL CASE juga bisa digunakan bersamaan dengan AVG untuk mencari nilai rata-rata. Masih dengan contoh tabel yang sama, kita akan mencari rata-rata pesanan yang lebih dari 30, sama dengan 30, dan kurang dari 30.SyntaxOutput output ini, kita dapat melihat bahwa rata-rataPenggunaan SQL CASE saat Menggabungkan Tabel
join atau penggabungan antar tabel. Customers dan join antara kedua tabel tersebut berdasarkan kondisi yang kompleks pada kolom OrderDate.Syntax{{COMPONENT_IDENTIFIER}}Dalam contoh ini, kita mengambil semua kolom (*) dari tabel Customers dan Orders yang memenuhi kondisi join yang ditentukan. Maka salah satu contoh adalah:Outputoutput ini, kita melihat beberapa kolom yang diambil dari tabel Orders berdasarkan kondisi join tersebut ditampilkan dalam hasil output ini mungkin berbeda tergantung pada struktur tabel dan kolom yang sebenarnya digunakan dalam Output ini hanya bertujuan untuk memberikan ilustrasi umum tentang tampilan hasil yang dapat diharapkan dari contohjoin antar tabel.Klausa FILTER sebenarnya hanya tersedia dalam beberapa database.
database tersebut.Misalkan kita memiliki tabel "Orders" dengan kolom "OrderID" dan "Quantity". Kita ingin menghitung jumlah pesanan yang lebih dari 30, sama dengan 30, dan kurang dari 30 menggunakan klausa FILTER.
Contoh hasil output ini, kita dapat melihat jumlah pesanan yang lebih dari 30 adalah 125, jumlah pesanan yang sama dengan 30 adalah 30, dan jumlah pesanan yang kurang dari 30 adalah 245.Kesimpulan
query SQL, memeriksa kondisi satu per satu, dan mengembalikan nilai berdasarkan kondisi yang cocok.multiple, penggunaan klausa ELSE untuk menangani kasus lainnya, dan pentingnya memastikan tipe data hasil dari THEN dan ELSE sama. FAQs
#1 COUNT
Output
output ini, kita dapat melihat bahwa ada 125 pesanan denganquantity yang sama dengan 30, dan 245 pesanan dengan SQL CASE juga bisa digunakan bersama fungsi SUM untuk mencari total
Output
output ini, kita dapat melihat bahwa totalquantity pesanan yang sama dengan 30 adalah 900, dan total SQL CASE juga bisa digunakan bersamaan dengan AVG untuk mencari nilai rata-rata. Masih dengan contoh tabel yang sama, kita akan mencari rata-rata pesanan yang lebih dari 30, sama dengan 30, dan kurang dari 30.
Syntax
Output
output ini, kita dapat melihat bahwa rata-rataPenggunaan SQL CASE saat Menggabungkan Tabel
database tersebut.
Misalkan kita memiliki tabel "Orders" dengan kolom "OrderID" dan "Quantity". Kita ingin menghitung jumlah pesanan yang lebih dari 30, sama dengan 30, dan kurang dari 30 menggunakan klausa FILTER.
Contoh hasil
output ini, kita dapat melihat jumlah pesanan yang lebih dari 30 adalah 125, jumlah pesanan yang sama dengan 30 adalah 30, dan jumlah pesanan yang kurang dari 30 adalah 245.
Kesimpulan
#1 Apakah SQL CASE WHEN hanya berlaku untuk kondisi numerik?
string atau tanggal.
#2 Apakah SQL CASE WHEN terbatas pada satu kolom saja?
query, termasuk dalam
bottom of page