SQL GROUP BY è il comando ideale se desideri rag­grup­pa­re dati con valori identici. Questa istru­zio­ne è am­pia­men­te uti­liz­za­ta in com­bi­na­zio­ne con funzioni di ag­gre­ga­zio­ne.

Cos’è SQL GROUP BY?

Nello Struc­tu­red Query Language SQL GROUP BY è un’istru­zio­ne che viene usata per rag­grup­pa­re righe con valori identici. Viene so­li­ta­men­te uti­liz­za­ta insieme al comando SQL SELECT e usa la clausola WHERE per filtrare le righe prima che vengano rag­grup­pa­te. Spesso, SQL GROUP BY si usa in com­bi­na­zio­ne con funzioni come SQL AVG(), SQL COUNT(), MAX(), MIN() o SUM(). In questo modo è possibile eseguire calcoli e vi­sua­liz­za­re i risultati all’interno della tabella. È par­ti­co­lar­men­te utile quando si desidera de­ter­mi­na­re una sequenza o mettere in relazione i valori tra loro.

Server virtuali (VPS)
Affidati ai VPS e server di IONOS, il tuo partner digitale cer­ti­fi­ca­to ISO
  • 1 Gbps di larghezza di banda e traffico il­li­mi­ta­to
  • Di­spo­ni­bi­li­tà del 99,99% e cer­ti­fi­ca­zio­ne ISO
  • As­si­sten­za 24/7 e con­su­len­te personale

Sintassi e fun­zio­na­men­to

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 con­co­mi­tan­za con la clausola WHERE, che consente di porre de­ter­mi­na­te con­di­zio­ni. 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’istru­zio­ne 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 ac­qui­sta­ti:

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 com­bi­na­zio­ne con la funzione COUNT(), ad esempio per creare un elenco di quanti clienti pro­ven­go­no da una de­ter­mi­na­ta 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 vi­sua­liz­za­re i risultati come “Quantità” usiamo gli alias SQL.

L’istru­zio­ne in com­bi­na­zio­ne con SUM()

Nel prossimo esempio usiamo SQL GROUP BY in com­bi­na­zio­ne con SUM() per de­ter­mi­na­re e vi­sua­liz­za­re 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 com­bi­na­zio­ne con ORDER BY

Il comando SQL GROUP BY può essere usato anche in com­bi­na­zio­ne con ORDER BY. In questo caso or­ga­niz­zia­mo la tabella or­di­nan­do­la per città e cliente in base al numero massimo di articoli ac­qui­sta­ti, partendo dalla località in cui un cliente ha ef­fet­tua­to il maggior numero di ordini. Uti­liz­zia­mo SQL GROUP BY in com­bi­na­zio­ne 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 com­bi­na­zio­ne con la clausola HAVING

È possibile integrare SQL GROUP BY anche con SQL HAVING. Nell’esempio seguente se­le­zio­nia­mo dalla lista solo i clienti con un numero cliente più piccolo di 1.300. Suc­ces­si­va­men­te, ordiniamo le persone rimanenti in base al numero crescente di articoli ordinati. Questo il codice cor­ri­spon­den­te:

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

Al­ter­na­ti­ve a SQL GROUP BY

Il comando PARTITION BY è un’al­ter­na­ti­va molto usata a SQL GROUP BY. La dif­fe­ren­za sta nel fatto che in questo caso si man­ten­go­no e sono vi­sua­liz­za­ti anche tutti i valori originari. In questo caso, molte delle funzioni aggregate men­zio­na­te in pre­ce­den­za fun­zio­na­no 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 ap­pro­fit­ti anche di ottime pre­sta­zio­ni, sicurezza ec­cel­len­te e con­su­len­za spe­cia­liz­za­ta.

Vai al menu prin­ci­pa­le