COUNT con CASE
Fa parte della sezione Oltre le basi del percorso SQL di Coddy. Lezione 12 di 27.
Puoi inserire un’espressione CASE all’interno di un aggregato. Il trucco è che COUNT ignora NULL, quindi un CASE senza ELSE conta solo le righe che soddisfano la condizione.
SELECT
COUNT(*) AS total,
COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM usersOra active_count è il numero di righe 'active', anche se non abbiamo filtrato l'intera query. Questo è il trucco alla base di ogni query di dashboard con metriche multiple che scriverai.
Sfida
FacileTabelle e colonne disponibili:
orders:id,customer_id,status
Per ogni customer_id restituisci:
customer_idtotal: totale degli ordini effettuati dal clienteshipped: conteggio in cuistatus = 'shipped'cancelled: conteggio in cuistatus = 'cancelled'
Restituisci solo i clienti che hanno almeno un ordine annullato. Ordina per customer_id.
Provalo tu
SELECT customer_id,
COUNT(*) AS total,
-- spediti, annullati usando COUNT(CASE ...)
FROM orders
GROUP BY customer_id
-- filtra i clienti con almeno un annullamento
ORDER BY customer_id
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