Buena noche Daniel, efectivamente está tal cual el profe lo escribió en el video y esto tiene dos soluciones, pero se debe entender por qué pasa:
El error que estás viendo es causado por la configuración del modo de SQL de MySQL, específicamente el modo ONLY_FULL_GROUP_BY. Este modo asegura que todas las columnas en la lista SELECT que no están dentro de funciones agregadas (como MIN(), MAX(), SUM(), etc.) deben estar presentes en la cláusula GROUP BY o ser funcionalmente dependientes de las columnas agrupadas. En este caso, la columna SABOR no está agregada ni en la cláusula GROUP BY, lo que genera el error.
Solución 1: Agregar la columna SABOR al GROUP BY
Una forma rápida de solucionar el problema es agregar la columna SABOR al GROUP BY, ya que en una consulta con GROUP BY, todas las columnas que no están dentro de una función agregada deben estar mencionadas en el GROUP BY:
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,
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;
Solución 2: Modificar el sql_mode
Otra opción es cambiar el modo de SQL para que no sea tan estricto con el GROUP BY. Si no necesitas una configuración estricta, puedes deshabilitar el modo ONLY_FULL_GROUP_BY ejecutando el siguiente comando (si tienes permisos de administrador):
SET sql_mode = (SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
Esto quitaría la restricción de ONLY_FULL_GROUP_BY y te permitiría ejecutar la consulta sin necesidad de modificar el GROUP BY. Sin embargo, esta opción no es la más recomendada si trabajas con bases de datos más complejas o si planeas hacer consultas más avanzadas en el futuro.
¡Saludos!