GROUP BY in Sql

Nel linguaggio Sql la clausola Group by divide una tabella in gruppi in base al valore di uno o più attributi. Si utilizza nelle interrogazioni.

SELECT ...
GROUP BY attributo

La clausola GROUP BY va indicata dopo FROM o WHERE se presente.

Se la clausola GROUP BY ha più attributi in sequenza, vanno separati con una virgola.

SELECT ...
GROUP BY att1, att2

L'ordine degli attributi determina la gerarchia del raggruppamento nella tabella Sql.

Esempio. La clausola crea dei gruppi più grandi con il primo attributo della lista (att1). Questi gruppi sono a loro volta divisi in sottogruppi più piccoli con il secondo attributo (att2).

A cosa serve GROUP BY?

Mi permette di applicare gli operatori aggregati (sum, min, max, avg, count) ai sottoinsiemi (gruppi) anziché alla tabella per intero.

Per applicare una condizione sui risultati aggregati posso aggiungere alla GROUP BY la clausola HAVING.

Attenzione. Nell'argomento della SELECT posso usare soltanto gli attributi usati nella clausola GROUP BY e gli operatori aggregati. Ad esempio, SELECT città FROM tabella GROUP BY regione è sbagliata. Viceversa è corretta la SELECT regione FROM tabella GROUP BY regione.

Un esempio pratico

Ho la tabella Studenti

la tabella Studenti

Voglio calcolare la media dell'età degli studenti per ogni città di provenienza.

Scrivo la selezione usando l'operatore aggregato AVG(Età) per calcolare la media e la clausola GROUP BY Città.

SELECT Città, AVG(Età)
FROM Studenti
GROUP BY Città

Il risultato dell'interrogazione è la media delle età per ogni città.

un esempio di group by

Esempio 2

Per modificare l'ordine alfabetico delle città basta aggiungere alla SELECT la clausola ORDER BY Città.

SELECT Città, AVG(Età)
FROM Studenti
GROUP BY Città
ORDER BY Città DESC

L'interrogazione visualizza i risultati in ordine inverso.

il risultato della select

Esempio 2

Per includere una condizione di selezione aggiungo la clausola WHERE dopo FROM.

SELECT Città, AVG(Età)
FROM Studenti
WHERE Città <> 'Napoli'
GROUP BY Città

L'interrogazione raggruppa i risultati dopo la selezione, escludendo le tuple di Napoli.

il risultato della select

Come funziona GROUP BY

L'interrogazione crea la tabella secondo le condizioni della SELECT, proiettando gli attributi.

come funziona GROUP BY

Poi raggruppa la tabella in base ai valori dell'attributo indicato come argomento nella clausola Group By.

come funziona GROUP BY in SQL

Infine, calcola gli operatori aggregati della Select nei singoli gruppi.

un esempio di group by

L'interrogazione restituisce i valori aggregati dei gruppi.

E così via

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Menu principale

  1. Il linguaggio Sql
  2. Come installare MySQL sul PC
  3. Come installare PostgreSQL
  4. Come creare una tabella
  5. Come fare una selezione
  6. Come modificare i dati in una tabella