In questo articolo spiegherò come ottenere una classificazione per fasce di una serie di valori.
Una delle classificazione classiche di una lista di valori è per fasce (di prezzo, ad esempio): quanti articoli costano meno di 100 Euro? Quanti tra 100 e 200? e così via.
La soluzione migliore sarebbe di inserire la fascia già nel record da classificare, magari con un trigger. Questa però è una soluzione ‘statica’, che prevede una classificazione rigida decisa a priori.
Potrebbe invece essere necessario creare una classificazione arbitraria, momentanea e non decisa a priori.
Per ottenere questi tipo di prospetto, si può usare una combinazione di GROUP BY e CASE, come nell’esempio che segue:
SELECT COUNT(Prezzo) AS [Numero Articoli], (CASE WHEN Prezzo<1000 THEN 'Bassa' WHEN Prezzo>10000 THEN 'Alta' ELSE 'Media' END ) AS [Fascia di prezzo] FROM Articoli GROUP BY (CASE WHEN Prezzo<1000 THEN 'Bassa' WHEN Prezzo>10000 THEN 'Alta' ELSE 'Media' END )
Otterremo quindi un elenco di quanti articoli sono nella fascia di prezzo ‘bassa’ (meno di 1.000 Euro), quanti nella fascia ‘Media’ (tra 1.000 e 10.000), e quanti nella fascia alta (più di 10.000 Euro).
Un’altra soluzione consiste nell’utilizzare una tabella di appoggio (fissa o temporanea) dove dichiarare le varie fasce, ed ottenere la classificazione con una JOIN.
Vedremo questa soluzione in un prossimo articolo.