Y propongo otra en su lugar pero antes de eso quiero demostrarles porque no tiene sentido la última consulta de la clase:
La última consulta que ejecuta el ingeniero Álvaro es la siguiente:
SELECT
ENVASE,
SABOR,
CASE
WHEN PRECIO_DE_LISTA >= 12 THEN 'COSTOSO'
WHEN PRECIO_DE_LISTA >= 5 AND PRECIO_DE_LISTA < 12 THEN 'ASEQUIBLE'
ELSE 'BARATO'
END AS PRECIO_SUBJETIVO,
MIN(PRECIO_DE_LISTA) AS PRECIO_MINIMO
FROM
TABLA_DE_PRODUCTOS
WHERE
TAMANO = '700 ML'
GROUP BY
ENVASE,
SABOR,
CASE
WHEN PRECIO_DE_LISTA >= 12 THEN 'COSTOSO'
WHEN PRECIO_DE_LISTA >= 5 AND PRECIO_DE_LISTA < 12 THEN 'ASEQUIBLE'
ELSE 'BARATO'
END
ORDER BY
ENVASE;

NOTA: En el foro de esta clase hay muchas publicaciones acerca de que varios compañeros no pueden ejecutar la consulta y les marca error y ese error es porque al momento de agrupar les falta agregar el campo SABOR.
Ahora analicemos de forma analítica la tabla TABLA_DE_PRODUCTOS:
- ¿Cuántos productos hay que contengan 700 ml?
SELECT
COUNT(*) AS PRODUCTOS_DE_700_ML
FROM
TABLA_DE_PRODUCTOS
WHERE
TAMANO = '700 ML';
- ¿Cuántos productos distintos hay por envase y sabor que contengan 700 ml?
SELECT
COUNT(DISTINCT ENVASE, SABOR) AS PRODUCTOS_DE_700_ML
FROM
TABLA_DE_PRODUCTOS
WHERE
TAMANO = '700 ML';

Ahora analicémoslo de forma visual:
SELECT
ENVASE,
SABOR
FROM
TABLA_DE_PRODUCTOS
WHERE
TAMANO = '700 ML'
ORDER BY
SABOR;

Entonces podemos concluir que si agrupamos por envase y por sabor el resultado consistirá en 10 agrupamientos con un solo registro; o sea, prácticamente lo mismo que la consulta anterior.
Bien, ahora analicemos el uso del CASE:
SELECT
ENVASE,
SABOR,
CASE
WHEN PRECIO_DE_LISTA >= 12 THEN 'COSTOSO'
WHEN PRECIO_DE_LISTA >= 5 AND PRECIO_DE_LISTA < 12 THEN 'ASEQUIBLE'
ELSE 'BARATO'
END AS PRECIO_SUBJETIVO
FROM
TABLA_DE_PRODUCTOS
WHERE
TAMANO = '700 ML'
ORDER BY SABOR;

El resultado es el mismo que el que ejecuta el ingeniero Álvaro pero sin el uso de GROUP BY por lo tanto no tiene sentido este ejercicio. Sí lo tendría si hubieran más registros o más campos en la tabla TABLA_DE_PRODUCTOS
Igual quiero aclarar que la función de agregación MIN(PRECIO_DE_LISTA) tampoco tiene nada de sentido ya que esa función se aplica a un solo registro.
Entiendo que el ingeniero ejecuta toda esa consulta porque quiere demostrar que podemos juntar todo lo que hemos estado aprendiendo a lo largo de este curso pero considero que debe ser un ejemplo que sí tenga sentido.
Ahora comparto mi propuesta:
Como ya demostramos que tenemos solo 10 productos de tamaño 470 ml y todos ellos son de botella de vidrio, entonces lo mejor es agruparlos por su precio subjetivo (COSTOSO, ASEQUIBLE y BARATO)
SELECT
CASE
WHEN PRECIO_DE_LISTA >= 12 THEN 'COSTOSO'
WHEN PRECIO_DE_LISTA >= 5 AND PRECIO_DE_LISTA < 12 THEN 'ASEQUIBLE'
ELSE 'BARATO'
END AS PRECIO_SUBJETIVO,
COUNT(*) AS CANTIDAD,
GROUP_CONCAT(NOMBRE_DEL_PRODUCTO, ', ', SABOR, ', ', PRECIO_DE_LISTA
ORDER BY PRECIO_DE_LISTA DESC
SEPARATOR '\n') AS PRODUCTOS,
MIN(PRECIO_DE_LISTA) AS PRECIO_MINIMO,
MAX(PRECIO_DE_LISTA) AS PRECIO_MAXIMO,
ROUND(AVG(PRECIO_DE_LISTA), 2) AS PRECIO_PROMEDIO
FROM
TABLA_DE_PRODUCTOS
WHERE
TAMANO = '700 ML'
GROUP BY
PRECIO_SUBJETIVO;
