Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não entendi porque o instrutor usou o case depois do group by

então o comando é esse

SELECT EMBALAGEM, 
CASE WHEN PRECO_DE_LISTA >= 12 then 'PRODUTO CARO'
when PRECO_DE_LISTa >= 7 AND PRECO_DE_LISTA  < 12 then 'PRODUTO EM CONTA'
ELSE 'PRODUTO BARATO' END AS STATUS_PRECO, avg(PRECO_DE_LISTA) as PRECO_MEDIO
 from tabela_de_produtos 
group by EMBALAGEM, 
CASE WHEN PRECO_DE_LISTA >= 12 then 'PRODUTO CARO'
when PRECO_DE_LISTa >= 7 AND PRECO_DE_LISTA  < 12 then 'PRODUTO EM CONTA'
ELSE 'PRODUTO BARATO' END 
order by EMBALAGEM

porque o instrutor usou o case depois do group by ?

2 respostas
solução!

Olá Daniel, tudo bem?

O CASE também foi utilizado no Group by, para que o agrupamento também levasse em consideração o resultado do CASE.

Veja bem, quando não utilizamos o CASE, apenas seria agrupado pelo campo EMBALAGEM, não levando em consideração todos os resultados retornados no CASE. Por exemplo, se a em EMBALAGEM GARRAFA tiver produtos que se enquadrem em PRODUTO BARATO e PRODUTO EM CONTA, apenas uma delas seria retornada, pois estamos agrupando apenas pela EMBALAGEM.

  • Não utilizando o CASE no Group by

Executando a query do aluno Daniel sem passar o case no group by

  • Utilizando o CASE no Group by

Executando a query do Daniel passando o case no group by

Espero ter ajudado e bons estudos!

obrigado.