Aggregazione e Raggruppamento in SQL
Scorri per mostrare il menu
L'aggregazione in SQL utilizza la clausola GROUP BY per organizzare i dati grezzi in righe di riepilogo. Utilizzando funzioni come SUM(), AVG() e COUNT(), è possibile trasformare milioni di righe in metriche aziendali utili direttamente all'interno di una cella SQL.
Per molti, SQL è il linguaggio più naturale per sintetizzare i dati. La sintassi è altamente leggibile e segue un flusso logico: scegliere le categorie, selezionare i calcoli e definire i gruppi. In questo capitolo, utilizzerai la vista temporanea creata in precedenza per eseguire le stesse aggregazioni fatte in Python, ma con la semplicità di SQL.
La clausola GROUP BY
In SQL, ogni colonna che non viene "sintetizzata matematicamente" deve essere inclusa nell'istruzione GROUP BY alla fine della query. Questo indica al motore SQL come suddividere i dati.
SELECT cut, COUNT(*)
FROM diamond_view
GROUP BY cut
Utilizzo delle funzioni di aggregazione integrate
SQL offre diverse funzioni standard per eseguire calcoli sulle colonne numeriche:
- SUM(): somma di tutti i valori nella colonna;
- AVG(): calcolo della media;
- MIN() / MAX(): ricerca del valore minimo o massimo;
- COUNT(): restituisce il numero di righe.
%sql
SELECT
cut,
SUM(x),
AVG(y)
FROM diamond_view
GROUP BY cut
Alias per report professionali
Per impostazione predefinita, SQL potrebbe etichettare le colonne dei risultati come sum(Total_Profit). Per rendere l'output adatto a una dashboard aziendale, utilizzare la parola chiave AS per rinominare queste colonne con nomi più descrittivi.
%sql
SELECT
cut,
SUM(x) AS Total_Length,
MAX(y) AS Highest_Diamond_Value
FROM diamond_view
GROUP BY cut
Filtraggio dei dati aggregati: la clausola HAVING
Un errore comune è tentare di filtrare un risultato aggregato utilizzando WHERE. In SQL, WHERE filtra le singole righe prima che vengano raggruppate. Se si desidera filtrare i risultati dopo che sono stati sommati (ad esempio, per mostrare solo le regioni con più di $1.000.000 di profitto), è necessario utilizzare la clausola HAVING.
%sql
SELECT cut, SUM(x) AS Total_Length
FROM diamond_view
GROUP BY cut
HAVING Total_Length > 4000
Ordinamento del riepilogo
Per evidenziare le informazioni più rilevanti, utilizzare sempre ORDER BY. Questo consente di classificare i risultati, ad esempio mostrando le regioni più redditizie in cima alla tabella.
%sql
SELECT cut, SUM(x) AS Total_Length
FROM diamond_view
GROUP BY cut
ORDER BY Total_Length DESC
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione