Hari 14: Agregasi Bersyarat dengan CASE
55 min
Last updated 25 Mar 2026
Conditional Aggregation
Menggabungkan CASE WHEN di dalam fungsi agregat memungkinkan kita membuat pivot sederhana — agregasi berdasarkan kondisi tertentu dalam satu baris.
-- Hitung pelanggan aktif vs nonaktif dalam 1 baris
SELECT
COUNT(*) AS total,
SUM(CASE WHEN status = 'aktif' THEN 1 ELSE 0 END) AS aktif,
SUM(CASE WHEN status = 'nonaktif' THEN 1 ELSE 0 END) AS nonaktif
FROM pelanggan;
-- Total pendapatan per status dalam 1 baris
SELECT
SUM(CASE WHEN status_pesanan = 'selesai' THEN total_harga ELSE 0 END) AS pendapatan_selesai,
SUM(CASE WHEN status_pesanan = 'dikirim' THEN total_harga ELSE 0 END) AS pendapatan_dikirim,
SUM(CASE WHEN status_pesanan = 'pending' THEN total_harga ELSE 0 END) AS pendapatan_pending
FROM pesanan;
💡 Teknik ini sering dipakai untuk membuat laporan "pivot" tanpa pivot table khusus.
💡
Notice: Pola SUM(CASE WHEN kondisi THEN 1 ELSE 0 END) = COUNT dengan kondisi.
Assignment
Buat ringkasan produk dalam 1 baris: total_produk, jumlah_produk_mahal (harga >= 1juta), jumlah_produk_murah (harga < 1juta), total_stok_mahal, total_stok_murah.
Expected output:
1 row(s) returned
SQL
query.sql
Solution
Output
⏳ Loading DB...