Mengelompokkan dan Memberi Label Data
Ubah nilai menjadi kategori.
Mengelompokkan dan Memberi Label Data adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Apa Itu Pengelompokan Kategori?
Pengelompokan kategori berarti mengelompokkan nilai mentah ke dalam kategori bernama—mengubah angka, tanggal, atau kode menjadi label yang mudah dipahami manusia.
Daripada menampilkan skor 87, Anda menampilkan "Good". Daripada menampilkan usia 14, Anda menampilkan "Teen". Ekspresi CASE adalah alat utama untuk melakukan ini.
Tabel Contoh: Pesanan
Kita akan menggunakan tabel orders di seluruh pelajaran ini. Setiap baris memiliki jumlah pesanan dan kode status.
Jalankan kueri di bawah ini untuk melihat data yang sedang kita gunakan.
SELECT id, customer, amount, status
FROM orders
ORDER BY id;Memberi Label dengan CASE WHEN
Pola pengelompokan kategori yang paling sederhana memeriksa suatu kondisi dan menetapkan label. Blok CASE WHEN ... THEN ... ELSE ... END mengembalikan string baru untuk setiap baris.
Di sini, kita memberi label setiap pesanan sebagai 'Large' atau 'Small' berdasarkan jumlahnya.
SELECT id,
amount,
CASE
WHEN amount >= 500 THEN 'Large'
ELSE 'Small'
END AS order_size
FROM orders;Beberapa Kategori dengan Rangkaian WHEN
Anda dapat menambahkan klausa WHEN sebanyak yang diperlukan. SQL memeriksanya dari atas ke bawah dan berhenti pada kecocokan pertama.
Contoh ini membagi jumlah menjadi tiga tingkatan: Small, Medium, dan Large.
SELECT id,
amount,
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders;Mengelompokkan Nilai Teks
Pengelompokan kategori tidak hanya berlaku untuk angka. Anda dapat mencocokkan nilai teks secara tepat dan menggantinya dengan label yang lebih mudah dipahami.
Di sini, kode status mentah 'P', 'S', dan 'C' diubah menjadi kata-kata yang mudah dibaca.
SELECT id,
status,
CASE status
WHEN 'P' THEN 'Pending'
WHEN 'S' THEN 'Shipped'
WHEN 'C' THEN 'Cancelled'
ELSE 'Unknown'
END AS status_label
FROM orders;Menggunakan Bentuk CASE Sederhana
Ketika Anda membandingkan satu kolom dengan beberapa nilai tetap, bentuk CASE sederhana (CASE column WHEN value ...) lebih singkat dan lebih mudah dibaca daripada mengulang nama kolom dalam setiap klausa WHEN.
Hasilnya identik dengan bentuk berbasis kondisi.
SELECT id,
CASE status
WHEN 'P' THEN 'Pending'
WHEN 'S' THEN 'Shipped'
WHEN 'C' THEN 'Cancelled'
ELSE 'Unknown'
END AS status_label
FROM orders;Pengelompokan Kategori dalam GROUP BY
Setelah memiliki label kategori, Anda dapat mengelompokkannya untuk menghitung jumlah baris dalam setiap kategori. Bungkus seluruh ekspresi CASE di dalam GROUP BY.
Kueri ini menunjukkan jumlah pesanan yang termasuk Small, Medium, atau Large.
SELECT
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier,
COUNT(*) AS total_orders
FROM orders
GROUP BY
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END;Pengelompokan Kategori dengan Alias Subkueri
Mengulang blok CASE yang panjang dalam GROUP BY membuat kueri menjadi bertele-tele. Pendekatan yang lebih rapi adalah membungkus kueri utama dalam subkueri (atau CTE) sehingga Anda dapat langsung merujuk ke aliasnya.
SELECT order_tier, COUNT(*) AS total_orders
FROM (
SELECT
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders
) AS bucketed
GROUP BY order_tier;Kategori Numerik: Kelompok Usia
Pengelompokan usia adalah contoh penggunaan pengelompokan kategori yang klasik. Kueri di bawah ini menetapkan setiap pelanggan ke kelompok usia yang memiliki nama.
Perhatikan bahwa kondisinya dimulai dari yang terkecil hingga terbesar—SQL berhenti pada WHEN pertama yang bernilai true, jadi urutannya penting.
SELECT name,
age,
CASE
WHEN age < 13 THEN 'Child'
WHEN age < 18 THEN 'Teen'
WHEN age < 65 THEN 'Adult'
ELSE 'Senior'
END AS age_group
FROM customers;Memberi Label pada NULL dalam Kategori
Jika suatu nilai adalah NULL, tidak ada kondisi WHEN yang akan mencocokkannya, kecuali IS NULL. Tanpa pemeriksaan eksplisit, NULL akan diteruskan ke cabang ELSE.
Tambahkan klausa WHEN column IS NULL untuk memberikan label tersendiri bagi NULL.
SELECT id,
amount,
CASE
WHEN amount IS NULL THEN 'No Data'
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders;Pengelompokan Kategori dalam ORDER BY
Anda juga dapat menggunakan ekspresi CASE langsung di dalam ORDER BY untuk mengatur prioritas pengurutan tanpa menambahkan kolom baru.
Contoh di bawah ini selalu menampilkan pesanan Pending terlebih dahulu, kemudian Shipped, lalu Cancelled.
SELECT id, customer, status
FROM orders
ORDER BY
CASE status
WHEN 'P' THEN 1
WHEN 'S' THEN 2
WHEN 'C' THEN 3
ELSE 4
END;Pemeriksaan Singkat
Uji pemahaman Anda tentang pengelompokan kategori dan pemberian label pada data dengan CASE.
Ringkasan Pelajaran
Kerja bagus! Berikut yang telah Anda pelajari tentang pengelompokan kategori dan pemberian label pada data:
- Pengelompokan kategori mengubah nilai mentah menjadi kategori bernama menggunakan
CASE WHEN. - Rangkaian klausa
WHENmembuat beberapa kategori; SQL berhenti pada kecocokan pertama. - Bentuk CASE sederhana (
CASE col WHEN val) ideal ketika membandingkan satu kolom dengan nilai tetap. - Anda dapat menggunakan ekspresi
CASEdalam GROUP BY untuk menghitung jumlah baris di setiap kategori. - Selalu tangani
NULLsecara eksplisit denganWHEN col IS NULLagar nilai tersebut mendapatkan label yang bermakna. CASEjuga dapat digunakan di dalamORDER BYuntuk menentukan prioritas pengurutan khusus.
Pengelompokan kategori membuat laporan jauh lebih mudah dibaca dengan mengganti kode dan angka mentah menjadi label yang jelas dan deskriptif.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengelompokkan dan Memberi Label Data” gratis?
Ya — teks lengkap “Mengelompokkan dan Memberi Label Data” 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 “Mengelompokkan dan Memberi Label Data”?
Ubah nilai menjadi kategori. 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 3 dari 4.
Berapa lama pelajaran “Mengelompokkan dan Memberi Label Data” 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