Nos exemplos do case, quando é dado um nome ao case, como o STATUS_PRECO, por exemplo, acho mais fácil e legível usar esse STATUS_PRECO na hora do GROUP BY ao invés de copiar todo o case novamente. Teria algum problema fazer isso?
Por exemplo:
SELECT EMBALAGEM,
CASE
WHEN PRECO_DE_LISTA >= 12 THEN "PRODUTO CARO"
WHEN PRECO_DE_LISTA >= 7 AND PRECO_DE_LISTA < 12 THEN "GOSTEI MEDIO"
ELSE "PRODUTO BARATO"
END AS STATUS_PRECO, AVG(PRECO_DE_LISTA) AS PRECO_MEDIO
FROM tabela_de_produtos WHERE SABOR LIKE '%Manga%'
group by EMBALAGEM, STATUS_PRECO
ORDER BY EMBALAGEM;
Na penúltima linha eu usei o alias STATUS_PRECO ao invés de copiar o case novamente. Funcionou igual e achei mais legível. Fiz isso tbm no ORDER BY.