Sobes.tech
Middle

Qual é a diferença entre WHERE e HAVING em SQL e por que usar HAVING após GROUP BY?

sobes.tech IA

Resposta da IA

No SQL, a cláusula WHERE filtra as linhas antes da agregação, ou seja, aplica-se aos dados originais e exclui registros indesejados antes de executar funções de agregação.

HAVING, por outro lado, é usado para filtrar os dados já agrupados após a aplicação do GROUP BY. Permite filtrar os grupos com base em condições de agregação.

Por exemplo, se desejar selecionar clientes cuja soma de pedidos seja superior a 1000, WHERE não seria adequado, pois a soma é uma função de agregação, e HAVING é precisamente para esses casos:

SELECT customer_id, SUM(order_amount) AS total
FROM orders
GROUP BY customer_id
HAVING SUM(order_amount) > 1000;

Assim, HAVING é usado para filtrar os resultados da agregação, enquanto WHERE filtra os dados originais antes da agregação.