1
resposta

AULA 3 - Cap. 11 / Consultas SQL

Não entendi o porque de usar novamente o CASE no andamento, sendo que já tinha colocado as mesmas condições logo em cima....

1 resposta

Olá Matheus, tudo bem? Note que o professor colocou o CASE completo dentro do GROUP BY depois colocar o campo EMBALAGEM, ele vez isso para que possamos agrupar os dados tanto pelas EMBALAGENS quanto pelo STATUS_PRECO (que é resultado do CASE, onde determina se o produto é "PRODUTO CARO", "PRODUTO EM CONTA" ou"PRODUTO BARATO"). Para lhe explicar melhor: Se você fizer a seguinte consulta:

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
WHERE SABOR = 'Manga'
GROUP BY EMBALAGEM
ORDER BY EMBALAGEM;

O resultado vai ser o seguinte:

+-----------+------------------+--------------------+
| EMBALAGEM | STATUS_PRECO     | PRECO_MEDIO        |
+-----------+------------------+--------------------+
| Garrafa   | PRODUTO BARATO   |  7.379999955495198 |
| Lata      | PRODUTO BARATO   |  3.859499931335449 |
| PET       | PRODUTO EM CONTA | 13.760499954223633 |
+-----------+------------------+--------------------+

Dessa forma teremos apenas um STATUS_PRECO para cada tipo de EMBALAGEM, ele apenas agrupou pela EMBALAGEM desconsiderando o STATUS_PRECO. Então podemos fazer dessa forma? Sim, claro, porém a CLASSIFICAÇÃO DO PREÇO NÃO É CONSIDERADA, portanto se adicionarmos o CASE do SELECT no GROUP BY, ele também vai considerar o preço, e é por isso que o mesmo tipo de EMBALAGEM vai aparecer mais de uma vez:

+-----------+------------------+--------------------+
| EMBALAGEM | STATUS_PRECO     | PRECO_MEDIO        |
+-----------+------------------+--------------------+
| Garrafa   | PRODUTO BARATO   |  5.179500102996826 |
| Garrafa   | PRODUTO EM CONTA |  8.480249881744385 |
| Lata      | PRODUTO BARATO   |  3.859499931335449 |
| PET       | PRODUTO CARO     | 16.510499954223633 |
| PET       | PRODUTO EM CONTA | 11.010499954223633 |
+-----------+------------------+--------------------+

Espero ter esclarecido sua dúvida!