Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Uasr avg y max a la vez

Estas en el tema de Uasr avg y max a la vez en el foro de Mysql en Foros del Web. Lo que quiero sacar es una nota maxima de la siguiente manera: select max(avg(nota)) FROM nota,juego WHERE nota.id_juego=juego.id ¿Como se puede hacer esto? ¿Hay alguna ...
  #1 (permalink)  
Antiguo 25/06/2011, 09:42
 
Fecha de Ingreso: abril-2011
Ubicación: Motril
Mensajes: 49
Antigüedad: 12 años, 11 meses
Puntos: 1
Uasr avg y max a la vez

Lo que quiero sacar es una nota maxima de la siguiente manera: select max(avg(nota)) FROM nota,juego WHERE nota.id_juego=juego.id

¿Como se puede hacer esto? ¿Hay alguna forma de hacer a la vez max y avg? Gracias...
  #2 (permalink)  
Antiguo 25/06/2011, 11:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Uasr avg y max a la vez

Es una operación sin sentido si no usas GROUP BY, porque AVG() en ese contexto sólo te devolverá un único valor. No habrá, entonces, una media mayor ni menor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/06/2011, 17:31
 
Fecha de Ingreso: abril-2011
Ubicación: Motril
Mensajes: 49
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: Uasr avg y max a la vez

bueno, la consulta mas bien intenta ser algo asi:

SELECT id, nombre, max(avg(nota)) nota_usuarios FROM videojuego,voto WHERE voto.id_juego=id GROUP BY voto.id_juego ORDER BY nota_usuarios DESC LIMIT 10

es decir quiero sacar los 10 mejores videojuegos, sabiendo su nota maxima, pero me da error hacer max(avg()) a la vez
  #4 (permalink)  
Antiguo 26/06/2011, 20:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Uasr avg y max a la vez

Porque no puedes calcular al mismo tiempo la media y la máxima sobre el mismo campo. Eso no tiene ningún sentido. No son operaciones compatibles.
Si lo que quieres es obtener la media de notas, y de esas medias obtener las 10 más altas, eso no es lo mismo que hacer ese menjunje de MAX(AVG()).
En todo caso, lo que debes hacer es obtener las medias, ordenarlas y luego seleccionar sólo las 10 más elevadas. ¿No te parece?

Es decir: Elimina el MAX y tendrás el resultado.
Código MySQL:
Ver original
  1.     id,
  2.     nombre,
  3.     AVG(nota)) nota_usuarios
  4. FROM videojuego J INNER JOIN voto V ON J.id = V.id_juego
  5. GROUP BY voto.id_juego
  6. ORDER BY nota_usuarios DESC
Si lo que quieres es por la máxima calificación obtenida:
Código MySQL:
Ver original
  1.     id,
  2.     nombre,
  3.     MAX(nota)) nota_usuarios
  4. FROM videojuego J INNER JOIN voto V ON J.id = V.id_juego
  5. GROUP BY voto.id_juego
  6. ORDER BY nota_usuarios DESC

La consulta que propones en el primer post hacer parecer que no tienes clara la diferencia de conceptos entre máximo y media de una sumatoria de valores.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: avg, max
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:53.