16. Il linguaggio SQL Vers. 11.0 – Gennaio 2026
I RAGGRUPPAMENTI
Capita con una notevole frequenza di dover effettuare calcoli o statistiche su dati memorizzati, che abbiano qualche caratteristica in comune. SQL mette a disposizione, a questo scopo, un potente strumento: i raggruppamenti.“ Raggruppare” significa " mettere insieme " tutti i dati, accomunati da qualche caratteristica, su cui vanno fatti alcuni tipi di conteggi.
Le funzioni di aggregazione che, come abbiamo visto in precedenza, permettono di ottenere informazioni riepilogative di sintesi delle ennuple di una tabella, sono in genere abbinate alle clausole di raggruppamento all’ interno dell’ istruzione SELECT.
Per esempio si determina con una query di raggruppamento l ' individuazione dello stipendio minimo o massimo dei dipendenti di un determinato reparto( codice); oppure la somma degli stipendi dei dipendenti con un determinato livello e via dicendo
Per poter eseguire un raggruppamento all’ interno di una SELECT, occorre rispettare la seguente SINTASSI:
GROUP BY < NomeAttributo1 >, …, < NomeAttributoN > [ HAVING < CondizioneGruppo >]
Con l’ aggiunta della clausola di raggruppamento il significato della SELECT è il seguente:- viene eseguito, se necessario, il prodotto delle tabelle presenti nella clausola FROM;- su tale prodotto, se previsto, si effettua una restrizione in base alla clausola WHERE;
- la tabella risultante viene logicamente partizionata in gruppi di righe in base alla clausola GROUP BY.( due righe appartengono allo stesso gruppo se hanno gli stessi valori per gli attributi elencati nella clausola GROUP BY);
- tutti i gruppi che non soddisfano l’ eventuale clausola HAVING vengono ora eliminati.
N. B. Ricordiamo che con la parola chiave DISTINCT, già presentata in precedenza, dopo il comando parola SELECT, abbiamo visto in pratica la forma più semplice di aggregazione: quella che distingue le righe uguali riportandole quindi una sola volta.
SELECT DISTINCT Livello FROM Dipendente;
SELECT Livello FROM Dipendente GROUP BY Livello;
Da quanto detto, possiamo desumere che se viene specificata una clausola GROUP BY, allora nella clausola SELECT dovrà essere presente:
• o un campo specificato nella clausola GROUP BY;
• oppure una funzione di aggregazione.
+--------- + | Livello | +--------- + | 7 | | 8 | | 9 | +--------- +
Questo perché quando il motore aggrega le righe deve sapere come comportarsi per ogni campo da restituire.
Autore: Rio Chierego( email: riochierego @ libero. it- sito web: www. riochierego. it) Pag. 47