Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

dúvida no resultado de max

então estou com uma dúvida por que aparece o resultado em embalagem como garrafa e em preço de lista sendo 38 quando eu executo esse comando

select embalagem , max(preco_de_lista) as maior_preco from tabela_de_produtos 

entranto quando eu uso esse comando abaixo usando group by ele mostra o resultado para onde tem embalagem pet o preço é o 38

select embalagem , max(preco_de_lista) as maior_preco from tabela_de_produtos 
group by embalagem;

Me pergunto o que era no primeiro comando o garrafa 38 então ? pois usando esses dois comandos obtive valores diferentes no que refere a embalagem sendo o mesmo valor no preço de lista.

1 resposta
solução!

Olá, Daniel, tudo bem?

A função de agregação MAX, retorna o maior valor dentro de um conjunto de valores. Em outros bancos de dados, como o SQL Server, quando utilizamos uma função de agregação, precisamos também utilizar a cláusula GROUP BY, pois é necessário especificar por quais campos queremos realizar o agrupamento dos registros.

No caso do MySQL, não precisamos utilizar a cláusula GROUP BY ao utilizar uma função de agregação, porém o retorno da consulta, não é feito de forma exata, como no caso da sua primeira query.

select embalagem , max(preco_de_lista) as maior_preco from tabela_de_produtos

Na primeira query, como não foi informado como seria feito o agrupamento, foi retornado o maior valor encontrado no campo preco_de_lista , já do campo embalagem foi retornado o primeiro valor encontrado, que foi a garrafa.

select embalagem , max(preco_de_lista) as maior_preco from tabela_de_produtos 
group by embalagem;

Ao executar a segunda query, utilizando a cláusula GROUP BY, foi retornado o valor máximo do campo preco_de_lista por embalagem, ou seja, para cada tipo de embalagem existente foi retornado o maior valor.

Espero ter ajudado e bons estudos!