Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Me aparece el error 1055 y no ejecuta

Al ejecutar

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;

me aparece:

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 0.000 sec

nota: Revise con el video y está igual al del profesor, pero no ejecuta.

2 respuestas
solución!

Hola Manuel, espero que esté bien.

El error que estás obteniendo se debe a que estás utilizando la cláusula GROUP BY para agrupar por ENVASE y por el resultado de una expresión CASE, pero también estás seleccionando la columna SABOR en tu consulta sin agregarla a la cláusula GROUP BY.

Para solucionar este problema, debes agregar la columna SABOR a la cláusula GROUP BY. Tu consulta debería quedar así:

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;

Espero que esto solucione tu problema.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Muchas Gracias María Fernanda por tu correccción. Había visto otras soluciones pero estaban todas erradas.