Junior
Qual é a diferença entre as cláusulas WHERE e HAVING em SQL?
sobes.tech IA
Resposta da IA
WHERE aplica-se antes da agrupação e filtra as linhas do resultado FROM. HAVING aplica-se após a agrupação e filtra os grupos formados com GROUP BY.
Exemplo:
Suponha que temos uma tabela orders com colunas customer_id, order_date e amount.
Encontrar todos os clientes cuja soma total de pedidos excede 1000:
SELECT customer_id, SUM(amount)
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 1000;
Encontrar todos os pedidos com valor superior a 1000:
SELECT customer_id, order_date, amount
FROM orders
WHERE amount > 1000;
Tabela de comparação:
| Característica | WHERE | HAVING |
|---|---|---|
| Aplicação | A linhas individuais antes de agrupar | A grupos de linhas após agrupar |
| Utiliza | Colunas de FROM |
Funções agregadas e colunas de GROUP BY |
| Executa-se | Antes de GROUP BY |
Depois de GROUP BY |
| Funções agregadas | Não pode ser usado diretamente | Pode ser usado |