Menu
Coddy logo textTech

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 users

Ora 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.

challenge icon

Sfida

Facile

Tabelle e colonne disponibili:

  • orders: id, customer_id, status

Per ogni customer_id restituisci:

  • customer_id
  • total: totale degli ordini effettuati dal cliente
  • shipped: conteggio in cui status = 'shipped'
  • cancelled: conteggio in cui status = '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
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Oltre le basi

Esercitati da solo: Playground SQL