Torna all'elenco degli articoli Articoli
Tempo di lettura: 17 minuti

SQL CASE WHEN spiegato: 10 facili esempi per principianti

L' istruzione CASE WHEN ci permette di prendere decisioni sui nostri dati, categorizzando e manipolando i record in base a condizioni specifiche. Scoprite come utilizzare CASE WHEN in questo articolo.

Immaginate di dover decidere cosa indossare per la giornata. Tirate fuori l'ombrello se piove, altrimenti lo lasciate a casa. Questa procedura decisionale equivale essenzialmente a un'istruzione SQL CASE WHEN.

In SQL, l'istruzione CASE WHEN funziona come un'espressione if-then-else e consente di creare classificazioni personalizzate all'interno di una query. Altri linguaggi di programmazione utilizzano una logica simile, ad esempio Python utilizza le espressioni if, elif e else, mentre JavaScript utilizza l'istruzione switch. La diffusione di questo concetto in tutti i linguaggi di programmazione ne sottolinea l'importanza: consente agli utenti di gestire una varietà di situazioni. In SQL, questo costrutto è uno strumento fondamentale per l'analisi dei dati.

In questo articolo troverete esercizi pratici sull'uso dell'istruzione CASE WHEN per l'analisi dei dati. Questa istruzione consente agli analisti di creare una logica personalizzata per la classificazione e il processo decisionale nelle loro query. Di conseguenza, l'accuratezza della query e la profondità dell'analisi vengono migliorate.

Se tutto questo vi sembra interessante, perché non esplorare il nostro Come creare semplici report SQL corso? Oltre a trattare i dettagli della sintassi di CASE WHEN, questo corso insegna anche a utilizzare le funzioni di aggregazione SQL come COUNT() e SUM(). Imparerete rapidamente a calcolare medie, a confrontare raggruppamenti aziendali e a organizzare query complesse.

Ora, immergiamoci nella complessità di SQL CASE WHEN e demistifichiamo l'istruzione attraverso alcuni esempi immediati!

Capire la sintassi CASE WHEN

Per esplorare le complessità dell'istruzione CASE WHEN, analizziamone la sintassi con alcuni esempi.

Sintassi di base: CASE WHEN THEN

Per iniziare, esamineremo la sintassi più semplice dell'istruzione SQL CASE WHEN. Questo costrutto è particolarmente utile per segmentare i record in base a un determinato criterio e generare una nuova colonna per mostrare i risultati. Ecco la sintassi:

SELECT
    column_name,
    CASE
        WHEN condition THEN result
    END AS new_column
FROM
    your_table;

Spieghiamo ogni parte in dettaglio:

  • SELECT: Specifica le colonne da includere nell'insieme dei risultati.
  • CASE: Valuta la condizione specificata per ogni riga dell'insieme di dati. Avvia la logica condizionale.
  • WHEN condition THEN result: Definisce la condizione da verificare e il risultato da assegnare se la condizione è soddisfatta. Ciò consente la classificazione dinamica dei dati.
  • END: Segna la fine di CASE Significa che la valutazione delle condizioni e l'assegnazione dei risultati sono completate.
  • AS new_column: Crea una nuova colonna denominata new_column nell'insieme dei risultati. Questa colonna cattura i risultati della valutazione di CASE WHEN per ogni riga.

Questo approccio è particolarmente utile quando si vuole introdurre una dimensione categorica nei dati in base a condizioni specifiche. Nella query qui sotto, utilizziamo CASE WHEN per etichettare come alte le città con temperature superiori a 30 gradi Celsius:

SELECT
    city,
    temperature,
    CASE
        WHEN temperature > 30 THEN 'High'
    END AS temperature_category
FROM
    weather_data;

Questo semplifica l'analisi dei modelli di temperatura con chiare etichette di soglia nella nuova colonna, contribuendo a creare un set di dati più espressivo e informativo per ulteriori analisi.

Si noti che in questa dichiarazione, i record che non soddisfano la condizione specificata avranno un valore NULL nella nuova colonna. Questo ci porta all'istruzione successiva.

CASE WHEN THEN ELSE

Senza la clausola ELSE, si corre il rischio che la nuova colonna contenga valori NULL. Incorporando una clausola ELSE, questo costrutto fornisce un risultato di ripiego quando la condizione non è soddisfatta. È utile quando si vuole garantire che ogni record dell'insieme di dati riceva un valore significativo nella nuova colonna.

Ecco la sintassi:

SELECT
    column_name,
    CASE
        WHEN condition THEN result
        ELSE alternative_result
    END AS new_column
FROM
    your_table;

Scomponiamo le condizioni:

  • WHEN condition THEN result: Definisce la condizione principale da controllare e il risultato corrispondente da assegnare se la condizione è soddisfatta.
  • ELSE alternative_result: Specifica un risultato alternativo da assegnare quando la condizione primaria non è soddisfatta Questo garantisce che la nuova colonna non contenga valori NULL.

Torniamo all'esempio dei dati meteo. Introducendo la clausola ELSE, le temperature inferiori alla soglia specificata saranno ora etichettate come normali. Questa costruzione funziona bene per garantire che ogni record della nuova colonna abbia un valore definito, migliorando l'accuratezza dell'analisi dei dati. Questa è la nuova query:

SELECT
    city,
    temperature,
    CASE
        WHEN temperature > 30 THEN 'High'
        ELSE 'Normal'
    END AS temperature_category
FROM
    weather_data;

Come si può vedere, tutte le temperature inferiori a 30 gradi Celsius sono classificate come normali; tutto ciò che supera i 30 gradi è alto.

Più THEN in CASE WHEN

Cosa succede se abbiamo più di una condizione da applicare ai nostri dati? L'esempio seguente mostra come utilizzare la sintassi dell'istruzione CASE WHEN con condizioni multiple. Ciò offre un metodo per classificare i dati in base a diversi standard:

SELECT
    column_name,
    CASE
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        -- Additional WHEN clauses as needed
    END AS new_column
FROM
    your_table;

Scomponiamo le condizioni:

  • WHEN condition1 THEN result1: Definisce la prima condizione da controllare e il risultato corrispondente se questa condizione è soddisfatta.
  • WHEN condition2 THEN result2: Specifica una seconda condizione e il relativo risultato.
  • È possibile aggiungere altre clausole WHEN per ulteriori condizioni.

In un'istruzione CASE con più clausole WHEN, l'ordine è significativo. Le condizioni vengono valutate in sequenza e la prima condizione soddisfatta determina il risultato. Una volta soddisfatta una condizione, viene restituito il risultato corrispondente e le clausole WHEN successive vengono saltate. In questo esempio, se condition1 è vero per una particolare riga, verrà restituito result1 e condition2 non verrà valutato per quella riga.

Nel contesto del nostro precedente esempio di dati meteorologici, la query finale incorpora più clausole e una clausola ELSE per garantire che tutti i record che non soddisfano le condizioni di temperatura specificate ricevano un risultato non NULL. Questa struttura garantisce che a ogni record della colonna temperature_category venga assegnata un'etichetta significativa, contribuendo così a un'analisi meteorologica più completa e informativa. Ecco la query:

SELECT
    city,
    temperature,
    CASE
        WHEN temperature > 30 THEN 'High'
        WHEN temperature <= 30 AND temperature > 20 THEN 'Moderate'
        ELSE 'Low'
    END AS temperature_category
FROM
    weather_data;

Come si può vedere, ora abbiamo tre categorie meteorologiche: Alta per le temperature superiori a 30 gradi, Moderata per le temperature comprese tra 20 e 30 e Bassa per tutte le altre temperature, cioè quelle inferiori a 20 gradi Celsius.

Ora applichiamo questi concetti ad alcuni problemi di analisi dei dati del mondo reale.

Esempi di utilizzo di CASE WHEN nell'analisi dei dati

Esempio 1: Categorizzazione dei dati

La comprensione dei dati delle transazioni è importante per valutare il comportamento di acquisto dei clienti nel contesto di un'attività di vendita al dettaglio.

Immaginiamo di avere un set di dati sulle transazioni di vendita. Potrebbe essere difficile ottenere rapidamente informazioni sulla distribuzione delle transazioni e analizzare gli importi grezzi delle transazioni. Un modo per gestire questa situazione è quello di raggruppare le transazioni in base all'importo. Ecco una query che ci permette di raggruppare le transazioni in categorie alte, medie e basse:

SELECT
    TransactionID,
    Amount,
    CASE
        WHEN Amount < 1000 THEN 'Low'
        WHEN Amount >= 1000 AND Amount < 5000 THEN 'Medium'
        WHEN Amount >= 5000 THEN 'High'
        ELSE 'Unknown'
    END AS TransactionCategory
FROM
    SalesTransactions;

Utilizzando l'espressione CASE, possiamo classificare le transazioni in gruppi significativi, semplificando l'analisi e consentendo una rapida panoramica dei modelli di transazione. Una transazione con un importo di 980 sarà classificata come Bassa, mentre una transazione con un importo di 5.200 sarà classificata come Alta. Questa categorizzazione dinamica semplifica l'analisi e fornisce una rapida panoramica dei modelli di transazione.

Esempio 2: Gestione dei valori NULL

Il monitoraggio delle date degli ordini è essenziale per una piattaforma di e-commerce; ci aiuta a comprendere il comportamento dei clienti e a sviluppare programmi di evasione degli ordini migliori.

Supponiamo di avere un set di dati in cui la colonna OrderDate contiene un gran numero di valori NULL. Quando si esaminano i dati relativi agli ordini, i valori mancanti nella colonna OrderDate possono causare malintesi o confusione. Scriviamo quindi una query che suddivide gli ordini in due gruppi: quelli con una data d'ordine(Order Placed) e quelli senza data d'ordine.

SELECT
    CustomerID,
    OrderDate,
    CASE
        WHEN OrderDate IS NULL THEN 'No Order Date'
        ELSE 'Order Placed'
    END AS OrderStatus
FROM
    Orders;

In questo caso, l'espressione CASE distingue tra record con e senza data dell'ordine, fornendo etichette chiare e migliorando l'accuratezza dell'analisi dei dati. Una riga con NULL OrderDate sarà etichettata come Nessuna data dell'ordine, a indicare che per quella transazione non è stata registrata alcuna data specifica dell'ordine. Al contrario, una riga con uno specifico OrderDate, ad esempio 2023-10-12, sarà etichettata come Order Placed (ordine effettuato), a indicare che è stato effettuato un ordine con una data specifica.

Esempio 3: Creazione di colonne aggregate

Per ottimizzare la produzione e la gestione delle scorte, un'azienda manifatturiera può cercare di determinare il livello di domanda dei suoi prodotti. I diversi livelli di domanda per i vari prodotti potrebbero non essere immediatamente evidenti osservando la quantità totale venduta. Pertanto, è possibile creare colonne aggiuntive nel set di risultati aggregando i dati in base a condizioni o criteri specifici.

Analizziamo una query di esempio:

SELECT
    ProductID,
    SUM(Quantity) AS TotalQuantity,
    CASE
        WHEN SUM(Quantity) > 100 THEN 'High Demand'
        ELSE 'Normal Demand'
    END AS DemandLevel
FROM
    OrderDetails
GROUP BY
    ProductID;

In questo caso, l'espressione CASE gestisce la categorizzazione dinamica dei livelli di domanda, consentendo all'azienda di identificare i prodotti ad alta richiesta e di adeguare di conseguenza i piani di produzione. Una riga con TotalQuantity di 120 sarà etichettata come High Demand, a indicare una forte domanda per quel prodotto specifico. Al contrario, una riga con TotalQuantity di 80 sarà etichettata come Normal Demand, indicando un livello di domanda standard per quel particolare prodotto.

Esempio 4: Analisi di marketing

Immaginate di essere un rivenditore online che desidera pianificare le campagne di marketing e le scorte di magazzino analizzando la stagionalità degli ordini dei clienti. È difficile individuare i picchi stagionali o le tendenze trimestrali quando si visualizzano gli ordini senza classificare i dati in base al tempo; per questo motivo analizziamo i dati in base a intervalli di date e offriamo approfondimenti sui modelli temporali.

SELECT
    OrderDate,
    COUNT(*) AS OrderCount,
    CASE
        WHEN OrderDate BETWEEN '2023-01-01' AND '2023-03-31' THEN 'Q1'
        WHEN OrderDate BETWEEN '2023-04-01' AND '2023-06-30' THEN 'Q2'
        -- Add more quarters as needed
    END AS Quarter
FROM
    Orders
GROUP BY
    OrderDate;

Utilizzando l'espressione CASE, organizziamo gli ordini in trimestri. Una riga con OrderDate di 2023-02-15 sarà etichettata come Q1, a significare che l'ordine rientra nel primo trimestre dell'anno. Un ordine effettuato su 2023-05-20 sarà etichettato come Q2, a indicare che rientra nel secondo trimestre. In questo modo, è possibile strategizzare gli sforzi di marketing e regolare i livelli di inventario in base alla domanda stagionale.

Esempio 5: Segmentazione dei clienti

Un servizio ad abbonamento cerca di personalizzare i propri prodotti e le proprie tattiche di marketing in base alle abitudini di acquisto dei propri utenti. Quando si preparano determinati report, un analista deve raggruppare i clienti in base a vari criteri; nell'esempio seguente, segmentiamo i clienti in gruppi in base alle loro abitudini di spesa:

SELECT
    CustomerID,
    SUM(PurchaseAmount) AS TotalPurchase,
    CASE
        WHEN SUM(PurchaseAmount) < 1000 THEN 'Bronze'
        WHEN SUM(PurchaseAmount) < 5000 THEN 'Silver'
        WHEN SUM(PurchaseAmount) < 10000 THEN 'Gold'
        ELSE 'Platinum'
    END AS CustomerSegment
FROM
    Purchases
GROUP BY
    CustomerID;

L'espressione CASE segmenta i clienti in categorie, consentendo al fornitore di servizi di offrire promozioni, sconti o servizi personalizzati in base al livello di spesa di ciascun segmento di clienti.

Esempio 6: Categorizzazione dei prodotti per fascia di prezzo

Esercizio: Comprendere la distribuzione dei prezzi dei prodotti in un sito di e-commerce è essenziale per prendere decisioni informate sui prezzi e sul marketing. Con un numero così elevato di prodotti disponibili, può essere difficile ottenere delle informazioni. Vi è stato chiesto di semplificare i dati in modo che il vostro capo possa comprendere l'ambiente dei prezzi e prendere decisioni migliori.

L'output di questo esercizio deve contenere le colonne ProductID, ProductName, Price e PriceCategory per ogni prodotto. La colonna PriceCategory deve classificare i prodotti come segue:

  • Prezzo basso: Assegnato ai prodotti con prezzi inferiori a 50.
  • Prezzo moderato: Assegnato ai prodotti con prezzi compresi tra 50 e 100.
  • Prezzo alto: Assegnato ai prodotti con prezzi superiori a 100.

Soluzione:

SELECT
    ProductID,
    ProductName,
    Price,
    CASE
        WHEN Price < 50 THEN 'Low Price'
        WHEN Price >= 50 AND Price < 100 THEN 'Moderate Price'
        WHEN Price >= 100 THEN 'High Price'
    END AS PriceCategory
FROM
    Products;

Uscita:

ProductIDProductNamePricePriceCategory
1Ultimate Headphones30Low Price
2Smartwatch XL80Moderate Price
3High-Performance Laptop120High Price

Spiegazione della soluzione: Questo esempio utilizza efficacemente l'istruzione CASE WHEN per classificare i prodotti in base alla fascia di prezzo. Le condizioni sono chiare e le etichette risultanti sono significative, consentendo un'analisi più semplice.

Esempio 7: Analisi dello stato di evasione degli ordini

Esercizio: In un negozio online, garantire che gli ordini siano consegnati in tempo è fondamentale per la soddisfazione dei clienti. Con un volume elevato di ordini, è difficile ottenere informazioni. Come si può migliorare l'analisi dei dati per monitorare e ottimizzare l'evasione degli ordini?

Il risultato atteso di questo esercizio dovrebbe presentare una chiara ripartizione di ciascun ordine, comprese le colonne OrderID, OrderDate, ShippedDate e FulfillmentStatus. La colonna FulfillmentStatus classifica gli ordini in tre gruppi:

  • Non spedito: Indica gli ordini in attesa di spedizione con un NULL ShippedDate.
  • Spedito in ritardo: Designa gli ordini il cui ShippedDate supera i tre giorni dal OrderDate, segnalando un ritardo.
  • Spedito in tempo: si applica agli ordini spediti entro tre giorni da OrderDate, assicurando un'evasione tempestiva.

Soluzione:

SELECT
    OrderID,
    OrderDate,
    ShippedDate,
    CASE
        WHEN ShippedDate IS NULL THEN 'Not Shipped'
        WHEN ShippedDate > DATEADD(day, 3, OrderDate) THEN 'Shipped Late'
        ELSE 'Shipped On Time'
    END AS FulfillmentStatus
FROM
    Orders;

Output:

OrderIDOrderDateShippedDateFulfillmentStatus
12023-01-102023-01-12Shipped On Time
22023-02-15NULLNot Shipped
32023-03-202023-03-25Shipped Late

Spiegazione della soluzione: Questo esempio mostra l'uso efficace di CASE WHEN per classificare gli ordini in base allo stato di evasione. Le condizioni sono strutturate in modo logico e forniscono informazioni chiare sul processo di evasione. La query è in linea con i suggerimenti precedentemente discussi, in quanto tratta i valori NULL in modo che gli ordini senza data di spedizione non vengano registrati come NULL.

Esempio 8: Segmentazione dei clienti in base alla frequenza di acquisto

Esercizio: Nella vendita al dettaglio online, la comprensione delle abitudini di acquisto dei clienti è fondamentale. Ma quando si dispone di un'ampia base di clienti, ottenere informazioni chiare è una sfida. Tenete conto di questo aspetto in questo esercizio, poiché vi viene chiesto di segmentare i clienti in base alla loro frequenza di acquisto.

Il risultato atteso di questo esercizio dovrebbe fornire una visione segmentata dei clienti in base alla loro frequenza di acquisto. Dovrebbe includere CustomerID, TotalOrders e CustomerSegment. La colonna CustomerSegment classifica i clienti in tre gruppi:

  • Acquirente infrequente: Si applica ai clienti con una frequenza di acquisto di un ordine.
  • Acquirenti abituali: Applicato ai clienti con una frequenza di acquisto compresa tra due e cinque ordini.
  • Acquirentefrequente: Applicato ai clienti con una frequenza di acquisto superiore a cinque ordini.

Soluzione:

SELECT
    CustomerID,
    COUNT(OrderID) AS TotalOrders,
    CASE
        WHEN COUNT(OrderID) = 1 THEN 'Infrequent Shopper'
        WHEN COUNT(OrderID) >= 2 AND COUNT(OrderID) <= 5 THEN 'Regular Shopper'
        WHEN COUNT(OrderID) > 5 THEN 'Frequent Shopper'
    END AS CustomerSegment
FROM
    Orders
GROUP BY
    CustomerID;

Output:

CustomerIDTotalOrdersCustomerSegment
1013Regular Shopper
1021Infrequent Shopper
1038Frequent Shopper

Spiegazione della soluzione: In questo esempio, includiamo le funzioni aggregate con l'istruzione CASE WHEN per classificare i clienti in base alla frequenza degli ordini. In questo modo, possiamo classificare i clienti in base alla frequenza di spesa sul sito web. Altri esempi di combinazione di funzioni aggregate con l'istruzione CASE WHEN sono disponibili nel nostro articolo Come usare CASE WHEN con SUM().

Esempio 9: Valutazione delle prestazioni dei dipendenti

Esercizio: Per prendere decisioni efficaci in materia di risorse umane, la valutazione delle prestazioni dei dipendenti è essenziale. Tuttavia, con un numero così elevato di dipendenti, il processo di analisi è complesso. Come si può semplificare l'analisi dei dati per valutare e classificare i dipendenti in base ai punteggi di produttività?

Il risultato atteso di questo esercizio dovrebbe semplificare l'analisi delle prestazioni dei dipendenti, fornendo una valutazione chiara di ciascun dipendente. Dovrebbe restituire le colonne EmployeeID, ProductivityScore e PerformanceRating. La colonna PerformanceRating classifica i dipendenti in tre gruppi:

  • Eccellente: Applicata ai dipendenti con un ProductivityScore pari o superiore a 90, che indica prestazioni eccellenti.
  • Buono: Applicato ai dipendenti con un ProductivityScore compreso tra 70 e 89, che riflette un buon rendimento.
  • Necessità di miglioramento: Applicato ai dipendenti con un ProductivityScore inferiore a 70, che indica aree in cui è necessario un miglioramento.

Soluzione:

SELECT
    EmployeeID,
    ProductivityScore,
    CASE
        WHEN ProductivityScore >= 90 THEN 'Excellent'
        WHEN ProductivityScore >= 70 AND ProductivityScore < 90 THEN 'Good'
        WHEN ProductivityScore < 70 THEN 'Needs Improvement'
    END AS PerformanceRating
FROM
    Employees;

Output:

EmployeeIDProductivityScorePerformanceRating
20195Excellent
20275Good
20360Needs Improvement

Spiegazione della soluzione: Definendo gli intervalli di prestazioni con la dichiarazione CASE WHEN, possiamo classificare i dipendenti in base ai punteggi di produttività. Poiché le condizioni sono chiare, le valutazioni delle prestazioni risultanti forniscono informazioni utili.

Esempio 10: Raggruppare i prodotti per anno di rilascio

Esercizio: La gestione delle scorte di prodotti richiede la comprensione dei cicli di vita dei prodotti. In un catalogo di grandi dimensioni, l'identificazione dei modelli può essere complicata. Come si può semplificare questo aspetto per raggruppare efficacemente i prodotti in base all'anno di uscita?

Il risultato atteso di questo esercizio dovrebbe fornire un chiaro raggruppamento dei prodotti in base agli anni di rilascio. Dovrebbe includere le colonne ProductID, ProductName, ReleaseYear e ReleaseCategory. La colonna ReleaseCategory classifica i prodotti in tre gruppi:

  • Nuovo rilascio: Applicato ai prodotti rilasciati nell'anno 2023, indica le ultime aggiunte al catalogo.
  • Rilascio recente: Si applica ai prodotti rilasciati tra il 2018 e il 2022, indicando gli articoli introdotti di recente.
  • Vecchio rilascio: Applicato ai prodotti rilasciati prima dell'anno 2018, per identificare gli articoli più vecchi del catalogo.

Soluzione:

SELECT
    ProductID,
    ProductName,
    EXTRACT(YEAR FROM ReleaseDate) AS ReleaseYear,
    CASE
        WHEN EXTRACT(YEAR FROM ReleaseDate) = 2023 THEN 'New Release'
        WHEN EXTRACT(YEAR FROM ReleaseDate) >= 2018 AND EXTRACT(YEAR FROM ReleaseDate) < 2023 THEN 'Recent Release'
        WHEN EXTRACT(YEAR FROM ReleaseDate) < 2018 THEN 'Old Release'
    END AS ReleaseCategory
FROM
    Products;

Output:

ProductIDProductNameReleaseYearReleaseCategory
1Chic Denim Jacket2022New Release
2Lunar Maxi Dress2019Recent Release
3Flare Athletic Leggings2015Old Release

Spiegazione della soluzione: Questo esempio finale mostra la versatilità di CASE WHEN. In questo caso, lo abbiamo utilizzato con le funzioni di DATETIME per classificare i prodotti in base agli anni di uscita.

8 suggerimenti per l'utilizzo di CASE WHEN nell'analisi dei dati

Ecco 10 suggerimenti che vi aiuteranno a sfruttare al meglio l'istruzione CASE WHEN:

  1. Comprendere i dati: Prima di implementare CASE WHEN, assicuratevi di aver compreso chiaramente i dati con cui state lavorando. Identificate le condizioni o i criteri specifici che aggiungeranno valore alla vostra analisi.
  2. Iniziare in modo semplice: Se siete alle prime armi con CASE WHEN, iniziate con condizioni semplici. Si può aggiungere gradualmente la complessità secondo le necessità. Questo assicura che il codice rimanga leggibile e più facile da risolvere.
  3. Utilizzare etichette significative: Quando si categorizzano i dati, scegliere etichette chiare e significative. Questo migliora l'interpretabilità dei risultati e rende l'analisi più accessibile agli altri.
  4. Considerare i tipi di dati: Assicuratevi che i tipi di dati nelle vostre condizioni corrispondano ai dati che state esaminando. Una mancata corrispondenza dei tipi di dati può portare a comportamenti ed errori imprevisti.
  5. Combinare le condizioni in modo logico: Utilizzate gli operatori AND e OR per esprimere condizioni composte. Le parentesi possono aiutare a chiarire l'ordine di valutazione.
  6. Affrontare i valori NULL: Considerare l'uso delle condizioni IS NULL, IS NOT NULL o ELSE per gestire esplicitamente le colonne dell'analisi che possono avere NULL.
  7. Utilizzare colonne aggregate: CASE WHEN è particolarmente utile per creare colonne aggregate. Ad esempio, è possibile classificare i gruppi in base ai valori aggregati (ad esempio, totali o medi) per ottenere informazioni su modelli o tendenze.
  8. Test e convalida: testare le dichiarazioni di CASE WHEN su un sottoinsieme più piccolo di dati prima di applicarle all'intero set di dati. Ciò consente di individuare eventuali problemi imprevisti e di garantire che la logica funzioni come previsto.

Oltre le basi con CASE WHEN

L'istruzione CASE WHEN in SQL è uno strumento fondamentale. Offre un approccio strutturato e flessibile alla logica condizionale, che rispecchia il processo decisionale quotidiano. Inoltre, la sua natura intuitiva la rende una funzione accessibile ma potente di SQL. Se avete bisogno di creare classificazioni personalizzate, gestire valori NULL e categorizzare i dati in modo dinamico, l'istruzione CASE WHEN è una vera risorsa.

Che siate principianti o analisti esperti, la padronanza dell'istruzione CASE WHEN è un passo fondamentale per sbloccare livelli più profondi di analisi dei dati. Approfondite le sue complessità con i nostri articoli Come usare CASE in ORDER BY in SQL e Come usare CASE WHEN in GROUP BY. E per un'esperienza di apprendimento interattiva, date un'occhiata al nostro Come creare semplici report SQL corso. Buon apprendimento!