Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

[Duda] Subconsultas

En el video explicativo, el profesor, al ejecutar la linea: SELECT ENVASE, MAX(PRECIO_DE_LISTA) AS PRECIO_MAXIMO FROM tabla_de_productos; le aparece el siguiente resultado:

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

al realizarlo, me aparece error 1140, no esta especificado GROUP BY, lo agrupo por Envase y sale un resultado diferente: Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadIngrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Se que el profesor tiene deshabilitado la función "only_full_group_by", pero la consulta debe arrojar, por lo menos, el mismo tipo de envase y el mismo precio máximo, pero no es así, en el ejemplo a él le sale botella de vidrio en envase y 38.01 como valor máximo, y en la consulta que yo realicé el precio máximo es el mismo (38.01) pero distinto envase (botella PET).

No es la primera pregunta en el foro acerca de los resultados que difieren de los mostrados en los ejemplos y los que muestran al ejecutarlos uno propiamente, y en discord, buscando ayuda, una solución posible es colocar al inicio de la sentencia ANY_VALUE.

Si son consultas avanzadas, debemos hablar de los mismos resultados.

1 respuesta
solución!

¡Hola Jonathan!

Entiendo tu confusión con los resultados que obtienes al ejecutar la consulta. En este caso, el error 1140 que mencionas se debe a que estás utilizando una función de agregación (MAX) sin especificar el agrupamiento (GROUP BY). Cuando no se especifica el agrupamiento, MySQL aplica una agrupación implícita y devuelve un único resultado para cada grupo.

En el ejemplo que mencionas, el profesor deshabilitó la opción "only_full_group_by", lo que permite ejecutar la consulta sin especificar el agrupamiento. Sin embargo, esto puede llevar a resultados inesperados, como en tu caso, donde el envase no coincide con el precio máximo.

Para obtener el mismo tipo de envase y el mismo precio máximo, debes agrupar la consulta por el campo "ENVASE". De esta manera, obtendrás el máximo precio para cada tipo de envase. La consulta quedaría así:

SELECT ENVASE, MAX(PRECIO_DE_LISTA) AS PRECIO_MAXIMO FROM tabla_de_productos GROUP BY ENVASE;

Esto te dará un resultado similar al que muestra el profesor en el video.

Recuerda que las subconsultas pueden ser muy útiles para obtener información más detallada y específica en tus consultas SQL. Si tienes alguna otra pregunta o duda, estaré encantado de ayudarte.

¡Espero haber ayudado y buenos estudios!

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