SQL GROUP BY: raggruppare dati che hanno valori uguali

SQL GROUP BY è il comando ideale se desideri raggruppare dati con valori identici. Questa istruzione è ampiamente utilizzata in combinazione con funzioni di aggregazione.

Cos’è SQL GROUP BY?

Nello Structured Query Language SQL GROUP BY è un’istruzione che viene usata per raggruppare righe con valori identici. Viene solitamente utilizzata insieme al comando SQL SELECT e usa la clausola WHERE per filtrare le righe prima che vengano raggruppate. Spesso, SQL GROUP BY si usa in combinazione con funzioni come SQL AVG(), SQL COUNT(), MAX(), MIN() o SUM(). In questo modo è possibile eseguire calcoli e visualizzare i risultati all’interno della tabella. È particolarmente utile quando si desidera determinare una sequenza o mettere in relazione i valori tra loro.

Server virtuali (VPS)
Virtualizzazione totale con accesso root completo
  • Traffico illimitato e fino a 1 Gbit/s di larghezza di banda
  • Storage SSD NVMe veloce
  • Plesk Web Host Edition incluso

Sintassi e funzionamento

La sintassi di base di SQL GROUP BY è la seguente:

SELECT colonna1, colonna2, colonna3, …
FROM nome_della_tabella
GROUP BY colonna1, colonna2, colonna3, …;
sql

Questo comando viene più spesso eseguito in concomitanza con la clausola WHERE, che consente di porre determinate condizioni. In questo caso il codice si scrive così:

SELECT colonna1, colonna2, colonna3, …
FROM nome_della_tabella
WHERE condizione
GROUP BY colonna1, colonna2, colonna3, …
ORDER BY colonna1, colonna2, colonna3, …;
sql

Esempio di utilizzo con COUNT()

Per mostrare come funziona l’istruzione SQL GROUP BY, creiamo una tabella molto semplice chiamata “elenco clienti”. Questa tabella include colonne per il numero cliente, il nome, la città e il numero di articoli acquistati:

Numero cliente Nome Città Articoli
1427 Rossi Roma 13
1377 Bianchi Milano 9
1212 Ferrari Milano 15
1431 Costa Firenze 22
1118 Russo Roma 10

Ora possiamo usare SQL GROUP BY in combinazione con la funzione COUNT(), ad esempio per creare un elenco di quanti clienti provengono da una determinata città. Il codice si scrive così:

SELECT Città, COUNT(*) AS Quantità
FROM Elenco_clienti
GROUP BY Città;
sql

Il risultato è questa nuova tabella:

Città Quantità
Firenze 1
Roma 2 ]
Milano 2

Quindi, per poter visualizzare i risultati come “Quantità” usiamo gli alias SQL.

L’istruzione in combinazione con SUM()

Nel prossimo esempio usiamo SQL GROUP BY in combinazione con SUM() per determinare e visualizzare quanti articoli sono stati ordinati da Milano. Per farlo usiamo questo codice:

SELECT Città, SUM(Articoli) AS Totale
FROM Elenco_clienti
WHERE Città = 'Milano'
GROUP BY Città;
sql

Il risultato è il seguente:

Città Totale
Milano 24

Uso in combinazione con ORDER BY

Il comando SQL GROUP BY può essere usato anche in combinazione con ORDER BY. In questo caso organizziamo la tabella ordinandola per città e cliente in base al numero massimo di articoli acquistati, partendo dalla località in cui un cliente ha effettuato il maggior numero di ordini. Utilizziamo SQL GROUP BY in combinazione con la funzione MAX() e ORDER BY:

SELECT Città, MAX(Articoli) AS Maggiore
FROM Elenco_clienti
GROUP BY Città ORDER BY Maggiore DESC;
sql

L’output si legge così:

Città Maggiore
Firenze 22
Milano 15
Roma 13

Uso in combinazione con la clausola HAVING

È possibile integrare SQL GROUP BY anche con SQL HAVING. Nell’esempio seguente selezioniamo dalla lista solo i clienti con un numero cliente più piccolo di 1.300. Successivamente, ordiniamo le persone rimanenti in base al numero crescente di articoli ordinati. Questo il codice corrispondente:

SELECT Città, Numero cliente, MIN(Articoli) AS Minore
FROM Elenco_clienti
GROUP BY Città, Numero cliente HAVING Numero cliente > 1300;
sql

Così facendo si ottiene la tabella con il nuovo output:

Città Numero cliente Minore
Milano 1377 9
Roma 1427 13
Firenze 1431 22

Alternative a SQL GROUP BY

Il comando PARTITION BY è un’alternativa molto usata a SQL GROUP BY. La differenza sta nel fatto che in questo caso si mantengono e sono visualizzati anche tutti i valori originari. In questo caso, molte delle funzioni aggregate menzionate in precedenza funzionano anche senza SQL GROUP BY.

Consiglio

Una banca dati come vuoi tu: grazie all’[hosting SQL server](https://www.ionos.it/cloud/sql-server-hosting server-hosting “Hosting SQL di IONOS”) di IONOS non puoi scegliere solo fra MSSQL, MySQL o MariaDB, ma approfitti anche di ottime prestazioni, sicurezza eccellente e consulenza specializzata.

Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top