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.