O HAVING no SQL faz um filtro do resultado enquanto o WHERE, AND e OR filtra antes do resultado. Isso?
O HAVING no SQL faz um filtro do resultado enquanto o WHERE, AND e OR filtra antes do resultado. Isso?
Olá, Helio, tudo bem?
O HAVING
e o WHERE
são ambos filtros, mas são aplicados em momentos diferentes durante o processamento da consulta SQL. O WHERE
é aplicado antes da agregação dos dados, enquanto o HAVING
é aplicado após a agregação dos dados.
Por exemplo, se você tem uma tabela com dados de vendas e quer saber quais vendedores venderam mais de 1000 unidades, você poderia usar o HAVING
para isso. A consulta seria algo assim:
SELECT Vendedor, SUM(Quantidade) as TotalVendas
FROM Vendas
GROUP BY Vendedor
HAVING SUM(Quantidade) > 1000;
Nesse caso, a consulta primeiro agrupa as vendas por vendedor, depois filtra os resultados para mostrar apenas os vendedores que venderam mais de 1000 unidades.
Por outro lado, se você quer filtrar as vendas que foram feitas após uma determinada data, você usaria o WHERE
, assim:
SELECT Vendedor, SUM(Quantidade) as TotalVendas
FROM Vendas
WHERE DataVenda > '2020-01-01'
GROUP BY Vendedor;
Nesse caso, a consulta primeiro filtra as vendas que foram feitas após '2020-01-01', e depois agrupa os resultados por vendedor.
Espero ter ajudado.
Caso surja alguma dúvida, fico à disposição.
Abraços e bons estudos!