1
resposta

HAVING / WHERE

Professora,

SELECT nome, preco FROM produtos WHERE preco > (SELECT AVG(preco) from produtos);

Esse código também traz o mesmo resultado?

Não entendi o porque agrupar, fiquei em dúvida, já que na tabela os nomes dos produtos não se repetem.

1 resposta

Oii, Kauê! Tudo bem?

Agradeço por trazer sua dúvida ao fórum para podermos te auxiliar e, além disso, pode ajudar outros colegas que tenham a mesma dúvida.

Sim, retornaria. No exemplo que você trouxe, o WHERE atuará como filtro para os produtos com preço acima da média. A cláusula WHERE é usado para filtrar linhas diretas da tabela com base em condições específicas que você define e é aplicado antes do GROUP BY.

HAVING, no contexto da aula, é usado para filtrar dados após uma agregação de registros, como vimos em aula usamos o método de agregação AVG que traz a média dos preços. E como estamos trabalhando com valores agregados, precisamos utilizar a cláusula GROUP BY para agrupar o resultado pelo campo preco e nome.

Saber quando utilizar um ou outro vai depender do contexto que está inserido, caso esteja com um grande volume de dados é preciso filtrar, organizar, agrupar os dados para poder fazer uma análise mais assertiva.

Na atividade Para saber mais: diferenças entre WHERE e HAVING em SQL você pode aprofundar um pouco mais nos conceitos, prática e, também, nas diferenças.

Espero ter esclarecido sua dúvida. Conte sempre conosco para te ajudar.

Bons estudos, Kauê!