0Pricing
SQL Academy · Lezione

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 WHEN creano 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 CASE in GROUP BY per contare le righe di ogni categoria.
  • Gestisca sempre i NULL in modo esplicito con WHEN col IS NULL, così ricevono un'etichetta significativa.
  • CASE funziona anche all'interno di ORDER BY per 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

  1. L'espressione CASE
  2. CASE semplice e con ricerca
  3. Raggruppare ed etichettare i dati
  4. CASE in ORDER BY e negli aggregati
← Torna a SQL Academy