Learn
← Previous Next →

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...