Raggruppare ed etichettare i dati
Trasformi i valori in categorie
Raggruppare ed etichettare i dati è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
Che cos'è la suddivisione in categorie?
La suddivisione in categorie consiste nel raggruppare i valori grezzi in categorie denominate, trasformando numeri, date o codici in etichette comprensibili.
Invece di mostrare un punteggio pari a 87, si mostra "Buono". Invece di mostrare un'età pari a 14 anni, si mostra "Adolescente". L'espressione CASE è lo strumento principale per farlo.
Tabella di esempio: ordini
Nel corso di questa lezione useremo una tabella orders. Ogni riga contiene l'importo di un ordine e un codice di stato.
Esegua la query seguente per visualizzare i dati su cui lavoreremo.
SELECT id, customer, amount, status
FROM orders
ORDER BY id;Assegnare etichette con CASE WHEN
Il modello più semplice per la suddivisione in categorie verifica una condizione e assegna un'etichetta. Il blocco CASE WHEN ... THEN ... ELSE ... END restituisce una nuova stringa per ogni riga.
Qui assegniamo a ogni ordine l'etichetta 'Grande' o 'Piccolo' in base al suo importo.
SELECT id,
amount,
CASE
WHEN amount >= 500 THEN 'Large'
ELSE 'Small'
END AS order_size
FROM orders;Più categorie con sequenze di WHEN
Può aggiungere tutte le clausole WHEN necessarie. SQL le verifica dall'alto verso il basso e si ferma alla prima corrispondenza.
Questo esempio suddivide gli importi in tre fasce: Piccolo, Medio e Grande.
SELECT id,
amount,
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders;Suddividere i valori testuali in categorie
Le categorie non servono solo per i numeri. Può confrontare valori testuali esatti e sostituirli con etichette più intuitive.
Qui i codici di stato grezzi 'P', 'S' e 'C' diventano parole comprensibili.
SELECT id,
status,
CASE status
WHEN 'P' THEN 'Pending'
WHEN 'S' THEN 'Shipped'
WHEN 'C' THEN 'Cancelled'
ELSE 'Unknown'
END AS status_label
FROM orders;Usare la forma CASE semplice
Quando confronta una colonna con diversi valori fissi, la forma CASE semplice (CASE column WHEN value ...) è più breve e più facile da leggere rispetto a ripetere il nome della colonna in ogni clausola WHEN.
Il risultato è identico a quello della forma ricercata.
SELECT id,
CASE status
WHEN 'P' THEN 'Pending'
WHEN 'S' THEN 'Shipped'
WHEN 'C' THEN 'Cancelled'
ELSE 'Unknown'
END AS status_label
FROM orders;Suddividere in categorie all'interno di GROUP BY
Una volta ottenuta un'etichetta di categoria, può raggruppare i dati in base a essa per contare quante righe rientrano in ogni categoria. Racchiuda l'intera espressione CASE in GROUP BY.
Questa query mostra quanti ordini sono Piccoli, Medi o Grandi.
SELECT
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier,
COUNT(*) AS total_orders
FROM orders
GROUP BY
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END;Suddividere in categorie con un alias di sottoquery
Ripetere un lungo blocco CASE in GROUP BY è verboso. Un approccio più ordinato consiste nel racchiudere la query principale in una sottoquery (o in una CTE), così da poter fare riferimento direttamente all'alias.
SELECT order_tier, COUNT(*) AS total_orders
FROM (
SELECT
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders
) AS bucketed
GROUP BY order_tier;Categorie numeriche: gruppi di età
Raggruppare per età è un caso d'uso classico della suddivisione in categorie. La query seguente assegna ogni cliente a una fascia d'età denominata.
Noti che le condizioni vanno dal valore più piccolo a quello più grande: SQL si ferma al primo WHEN vero, quindi l'ordine è importante.
SELECT name,
age,
CASE
WHEN age < 13 THEN 'Child'
WHEN age < 18 THEN 'Teen'
WHEN age < 65 THEN 'Adult'
ELSE 'Senior'
END AS age_group
FROM customers;Assegnare un'etichetta ai NULL in una categoria
Se un valore è NULL, nessuna condizione WHEN (ad eccezione di IS NULL) vi corrisponderà. Senza un controllo esplicito, i NULL passano al ramo ELSE.
Aggiunga una clausola WHEN column IS NULL per assegnare ai NULL una categoria specifica.
SELECT id,
amount,
CASE
WHEN amount IS NULL THEN 'No Data'
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders;Suddividere in categorie in ORDER BY
Può anche usare un'espressione CASE direttamente all'interno di ORDER BY per controllare la priorità di ordinamento senza aggiungere una nuova colonna.
L'esempio seguente mostra sempre prima gli ordini Pending, poi quelli Shipped e infine quelli Cancelled.
SELECT id, customer, status
FROM orders
ORDER BY
CASE status
WHEN 'P' THEN 1
WHEN 'S' THEN 2
WHEN 'C' THEN 3
ELSE 4
END;Verifica rapida
Verifichi la sua comprensione della suddivisione in categorie e dell'assegnazione di etichette ai dati con CASE.
Riepilogo della lezione
Ottimo lavoro! Ecco che cosa ha appreso sulla suddivisione in categorie e sull'assegnazione di etichette ai dati:
- La suddivisione in categorie trasforma i valori grezzi in categorie denominate usando
CASE WHEN. - Le sequenze di clausole
WHENcreano più categorie; SQL si ferma alla prima corrispondenza. - La forma CASE semplice (
CASE col WHEN val) è ideale quando si confronta una colonna con valori fissi. - Può usare un'espressione
CASEin GROUP BY per contare le righe di ogni categoria. - Gestisca sempre i
NULLin modo esplicito conWHEN col IS NULL, così ricevono un'etichetta significativa. CASEfunziona anche all'interno diORDER BYper definire una priorità di ordinamento personalizzata.
La suddivisione in categorie rende i report molto più leggibili, sostituendo codici e numeri grezzi con etichette chiare e descrittive.
Domande Frequenti
La lezione «Raggruppare ed etichettare i dati» è gratuita?
Sì — il testo completo di «Raggruppare ed etichettare i dati» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «Raggruppare ed etichettare i dati»?
Trasformi i valori in categorie Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Raggruppare ed etichettare i dati»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- L'espressione CASE
- CASE semplice e con ricerca
- Raggruppare ed etichettare i dati
- CASE in ORDER BY e negli aggregati