Having in SQL
Nel linguaggio SQL la clausola Having mi permette di aggiungere una condizione di tipo aggregato sui gruppi creati con GROUP BY.
SELECT ...
GROUP BY attributo
HAVING condizione
L'interrogazione SELECT visualizza soltanto i dati aggregati che soddisfano la condizione indicata in HAVING.
La condizione è un'espressione booleana composta da costanti e operatori aggregati (Sum, Avg, Max, Min, Count).
Nota. A differenza della clausola WHERE, la clausola HAVING si applica sui dati aggregati, sui sottoinsiemi di righe e non sulle singole righe della tabella.
Un esempio pratico
Ho la tabella Studenti
Voglio selezionare le città in cui la media dell'età degli studenti è inferiore a 21 anni.
SELECT Città, AVG(Età) FROM Studenti
GROUP BY Città
HAVING AVG(Età)<21
La query produce la tabella divisa in gruppi.
Calcola la media in ogni singolo gruppo con l'operatore aggregato AVG e visualizza quelli in cui la media è inferiore a 21.
Nella tabella di output non appare Milano perché la media degli studenti è esattamente uguale a 21. Quindi non rispetta la condizione HAVING.
E così via.