Sobes.tech
Middle

Quais são as diferenças entre os operadores WHERE e HAVING em SQL?

sobes.tech IA

Resposta da IA

WHERE filtra as linhas antes de agrupar (GROUP BY), e HAVING filtra os grupos depois de agrupar. WHERE pode usar colunas que não estão em SELECT, HAVING geralmente usa funções de agregação ou colunas presentes em GROUP BY.

Exemplo:

SELECT
    category,
    COUNT(*) as total_items
FROM
    products
WHERE
    price > 10 // Filtra os produtos antes de agrupar por categoria
GROUP BY
    category
HAVING
    COUNT(*) > 5; // Filtra os grupos de categorias com mais de 5 produtos

Comparação:

Operador Propósito Aplica-se a Pode usar funções de agregação Ordem de execução em relação ao GROUP BY
WHERE Filtra linhas Linhas individuais Não Antes
HAVING Filtra grupos Grupos de linhas Sim Depois