SQL CLAUSOLA HAVING

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 VS WHERE

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;