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;
|