Commenti(0)
Aggregare dati in MySQL Istruzioni GROUP BY ed HAVING
I primi passi per estrarre dati aggregati da un DB MYSQL
In MySQL e più in generale nello standard SQL la clausola GROUP BY, permette di raggruppare i record estratti con una query in gruppi. Ad esempio se abbiamo una tabella impiegato costituita dalle colonne Eta Stipendio e Citta così valorizzate
| Eta | Stipendio | Citta |
| 25 | 1000 | Napoli |
| 35 | 2000 | Roma |
| 27 | 3000 | Milano |
| 45 | 4000 | Napoli |
| 32 | 5000 | Roma |
| 36 | 6000 | Milano |
| 20 | 7000 | Milano |
| 28 | 8000 | Napoli |
| 31 | 9000 | Roma |
| 40 | 10000 | Roma |
La seguente query
restituirà il seguente risultato.| SommaStipendi | Citta |
| 13000 | Napoli |
| 26000 | Roma |
| 16000 | Milano |
Nella query di sopra si è utilizzata la funzione di aggregazione SUM. Tale funzione agisce soltanto su valori numerici e calcola la somma dei valori raggruppati. La clausola HAVING viene utilizzata quando risulta necessario selezionare tra i gruppi già individuati dalla GROUP BY quelli che ci interessano. Ad esempio supponiamo che dalla tabella impiegato vogliamo estrarre le città i cui impiegati complessivamente guadagnano più di 20000 euro. La query in MySQL sarà la seguente
In questo caso il risultato sarà
| SommaStipendi | Citta |
| 26000 | Roma |
Da quanto espresso sopra sembra che HAVING e WHERE siano molto simili. In realtà c’è una differenza sostanziale. Infatti Mentre la clausola WHERE permette di specificare condizioni sulle singole righe della tabella, HAVING definisce delle condizioni sui gruppi selezionati dalla query. Infatti la seguente query
fa prima una estrazione sulla tabella impiegato, prendendo coloro che hanno una età superiore ai 30 anni, successivamente li raggruppa per Città e si estrae quelle per cui la media stipendio è superiore a 6500, in questo caso solo Roma. Da notare che anche in questo caso è stata utilizzata un’altra funzione di aggregazione che è AVG che agisce solo su valori numerici e si calcola la media aritmetica dei valori raggruppati.
Condividi su:
Esprimi un voto:
Argomenti chiave:

MySQL Report un tool di shell per tenere tutto sotto controllo