SUM dengan CASE
Termasuk bagian Lebih dari Dasar-Dasar dalam perjalanan SQL di Coddy. Pelajaran 13 dari 27.
Ide yang sama juga berlaku untuk SUM, dan cara ini bahkan lebih fleksibel. CASE dapat mengembalikan 1 untuk baris yang cocok dan 0 untuk baris lainnya, atau dapat mengembalikan nilai numerik apa pun untuk memberi bobot yang berbeda pada setiap baris.
SELECT
SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_count,
SUM(CASE WHEN plan = 'pro' THEN amount ELSE 0 END) AS pro_revenue
FROM usersSUM(CASE … THEN 1 ELSE 0 END) dan COUNT(CASE … THEN 1 END) memberikan hasil yang sama untuk penghitungan. Pilih gaya yang disukai timmu.
Tantangan
MudahTabel dan kolom yang tersedia:
transactions:id,category,type,amount
type adalah 'sale' atau 'refund'. Untuk setiap category, tampilkan:
categorynet_revenue: jumlah nilai penjualan dikurangi jumlah nilai pengembalian dana
Hitung net_revenue dalam satu ekspresi SUM(CASE …), dengan nilai pengembalian dana dihitung sebagai angka negatif. Urutkan berdasarkan net_revenue secara menurun.
Coba sendiri
SELECT category,
-- satu SUM(CASE ...) dengan pengembalian dana dihitung sebagai nilai negatif
FROM transactions
GROUP BY category
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