La clausola HAVING
viene utilizzata se è necessario filtrare il set di risultati in base a funzioni aggregate come MIN()
e MAX()
, SUM()
e AVG()
, COUNT()
.
SELECT COUNT(customer_id), country FROM customers GROUP BY country HAVING COUNT(customer_id) > 1;
HAVING
è stata introdotta perché la clausola WHERE
non supporta le funzioni aggregate. Per utilizzare HAVING
bisogna prima utilizzare la clausola GROUP BY
.
clausola HAVING | clausola WHERE |
---|---|
La clausola HAVING verifica la condizione su un gruppo di righe. |
La clausola WHERE verifica la condizione su ogni singola riga. |
La clausola HAVING viene utilizzata con le funzioni aggregate. |
La clausola WHERE non può essere utilizzata con funzioni aggregate. |
La clausola HAVING viene eseguita dopo la clausola GROUP BY . |
La clausola WHERE viene eseguita prima della clausola GROUP BY . |
esempio | |
SELECT customer_id, SUM(amount) AS total FROM orders GROUP BY customer_id HAVING SUM(amount) < 500; |
SELECT customer_id, amount FROM orders WHERE amount < 500; |