Hola. He visto que algunos reportan problemas con la última consulta que aparece en los videos del aula 3 (y la última de Haga lo que hicimos en aula). Ya respondí en otro tópico, pero me parece importante que aparezca en la lista del foro, ya que donde respodí puede que no pongan que el problema se solucionó. El código es:
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,
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;
En algunos casos la consulta da un error:
Error Code: 1055. Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'jugos_ventas.tabla_de_productos.SABOR' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
El problema aparece en la última parte (sql_mode=only_full_group_by
) y esto tiene que ver cómo funciona el motor de MYSQL (hasta donde yo lo entiendo). Este no era el modo por default en versiones de MYSQL anteriores a la 8.0.15 (tal vez haya alguna versión anterior donde esto tampoco funciona por default, lo que encontré es a partir de esta versión).
Para que la consulta funcione tal cual está, hay que cambiar el modo, corriendo la siguiente sentencia antes de la consulta:
SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
NOTA: Esto cambia el modo en la sesión, pero no es permanente (si reinician la computadora o el servicio de mysql vuelve a como estaba antes).
La solución la encontré en este link: https://clientes.digital-express.com.ar/support/solutions/articles/48001187649-mysql-error-1055-group-by
Espero sirva. Saludos.