Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Diferença entre HAVING e WHERE

Boa tarde! Não ficou muito claro pra mim a diferença entre utilizar o HAVING e o WHERE. Seria a ordem em que são utilizados? Com HAVING: SELECT EMBALAGEM, MAX(PRECO_DE_LISTA) AS MAIOR_PRECO, MIN(PRECO_DE_LISTA) AS MENOR_PRECO FROM tabela_de_produtos GROUP BY EMBALAGEM HAVING SUM(PRECO_DE_LISTA) <= 80 AND MAX(PRECO_DE_LISTA) >=5;

Com WHERE seria assim? SELECT EMBALAGEM, MAX(PRECO_DE_LISTA) AS MAIOR_PRECO, MIN(PRECO_DE_LISTA) AS MENOR_PRECO FROM tabela_de_produtos WHERE SUM(PRECO_DE_LISTA) <= 80 AND MAX(PRECO_DE_LISTA) >=5 GROUP BY EMBALAGEM;

2 respostas
solução

Para você usar o HAVING, primeiro você precisa fazer o GROUP BY, já que ele vai ser aplicado ao resultado do agrupamento.

Se você tentar fazer sem o HAVING, deve receber uma mensagem de erro como esta:

An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.

Obrigado Daniel!! Esclareceu!!