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.
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.
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
.
Já 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ê!