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 usersSekarang 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.
Tantangan
MudahTabel dan kolom yang tersedia:
orders:id,customer_id,status
Untuk setiap customer_id, kembalikan:
customer_idtotal: jumlah seluruh pesanan yang dibuat pelanggan tersebutshipped: jumlah pesanan denganstatus = 'shipped'cancelled: jumlah pesanan denganstatus = '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
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Lebih dari Dasar-Dasar
3Agregasi dengan Kondisi
COUNT dengan CASESUM dengan CASEMengubah Baris menjadi KolomRangkuman: Sumber TrafikLatihan sendiri: Playground SQL