Menu
CoddyTech

COUNT dengan CASE

Termasuk bagian Lebih dari Dasar-Dasar dalam perjalanan SQL di Coddy. Pelajaran 12 dari 27.

Kamu bisa menempatkan ekspresi CASE di dalam agregat. Triknya, COUNT mengabaikan NULL, jadi CASE tanpa ELSE hanya menghitung baris yang memenuhi kondisi.

SELECT
    COUNT(*) AS total,
    COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM users

Sekarang active_count adalah jumlah baris 'active' meskipun kamu tidak memfilter seluruh query. Inilah trik di balik setiap query dasbor multi-metrik yang akan kamu tulis.

challenge icon

Tantangan

Mudah

Tabel dan kolom yang tersedia:

  • orders: id, customer_id, status

Untuk setiap customer_id, kembalikan:

  • customer_id
  • total: jumlah seluruh pesanan yang dibuat pelanggan tersebut
  • shipped: jumlah pesanan dengan status = 'shipped'
  • cancelled: jumlah pesanan dengan status = 'cancelled'

Hanya kembalikan pelanggan yang memiliki setidaknya satu pesanan yang dibatalkan. Urutkan berdasarkan customer_id.

Coba sendiri

SELECT customer_id,
       COUNT(*) AS total,
       -- hitung yang dikirim dan dibatalkan dengan COUNT(CASE ...)
FROM orders
GROUP BY customer_id
-- filter pelanggan yang memiliki setidaknya satu pembatalan
ORDER BY customer_id
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Lebih dari Dasar-Dasar

Latihan sendiri: Playground SQL