SUM con CASE
Fa parte della sezione Oltre le basi del percorso SQL di Coddy. Lezione 13 di 27.
La stessa idea funziona con SUM: ed è ancora più flessibile. CASE può restituire 1 per le righe corrispondenti e 0 per tutto il resto, oppure può restituire qualsiasi valore numerico per attribuire pesi diversi alle righe.
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) e COUNT(CASE … THEN 1 END) danno lo stesso risultato per il conteggio; scegli lo stile che preferisce il tuo team.
Sfida
FacileTabelle e colonne disponibili:
transactions:id,category,type,amount
type è 'sale' oppure 'refund'. Per ogni category restituisci:
categorynet_revenue: somma degli importi delle vendite meno somma degli importi dei rimborsi
Calcola net_revenue in una singola espressione SUM(CASE …), in cui i rimborsi contribuiscono con il loro importo come numero negativo. Ordina per net_revenue in ordine decrescente.
Provalo tu
SELECT category,
-- un SUM(CASE ...) in cui i rimborsi vengono conteggiati come valori negativi
FROM transactions
GROUP BY category
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Oltre le basi
2Funzioni sulle stringhe
LENGTH, UPPER, LOWERSUBSTRINSTRREPLACE e TRIMConcatenare con ||Ripasso - Fatture3Aggregazione condizionale
COUNT con CASESUM con CASETrasformare le righe in colonneRiepilogo - Fonti di trafficoEsercitati da solo: Playground SQL