Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/01/2012, 02:01
Fozziepupus
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta Duda para Obtener promedio mas alto

Hey que tal comunidad...

Estoy repasando SQL en la escuela y haciendo unas consultas, tengo una base en MySQL llamado alumnos, con cuatro tablas 1-alumno 2- materia 3- alumnomateria 4- cursos. En la tabla alumno materia tengo los campos


alumnomateria
-----------------------------------------------------------------------------------------
matricula [int] | claveMateria [foranea, int] | calificacion [double]
-----------------------------------------------------------------------------------------
1---------------------------------1---------------------------------------9
2---------------------------------2--------------------------------------10
3---------------------------------3---------------------------------------8
1---------------------------------3---------------------------------------9
2---------------------------------1--------------------------------------10
3---------------------------------2---------------------------------------6
1---------------------------------2--------------------------------------10
2---------------------------------3--------------------------------------10
3---------------------------------1---------------------------------------8
-----------------------------------------------------------------------------------------

alumno
-----------------------------------------------------------------------------------------------------
matricula | nombre | domicilio | telefono | numHermanos | claveCurso
-----------------------------------------------------------------------------------------------------
1-----------------Cesar-----------SJR---------112545------------1------------------1
2-----------------Wendolin------SJR---------147485-------------3------------------2
3-----------------Erick------------HID---------578445------------1------------------1
-----------------------------------------------------------------------------------------------------

materia
-------------------------------------------------------------------
claveMateria [PK] | nombreMateria | tipoMateria
-------------------------------------------------------------------
1--------------------------Matematicas-----------------TP
2--------------------------Programacion----------------P
3--------------------------Base de datos---------------TP



Necesito hacer la consulta:

Buscar a los alumnos con los promedios mas altos de cada materia

Para lo cual hice estas consultas:

SELECT A.nombre, A.matricula, AVG(N.calificacion) promedio
FROM alumno A, alumnomateria N, materia M
WHERE A.matricula = N.matricula
AND N.claveMateria = M.claveMateria
GROUP BY (M.nombreMateria) HAVING MAX(promedio)

------------------------------------------------------------------------------------------

SELECT A.nombre, A.matricula, AVG( N.calificacion ) promedio
FROM alumno A, alumnomateria N
WHERE A.matricula = N.matricula GROUP BY(A.matricula)
HAVING MAX( promedio )


pero no me obtienen ningun registro!! y me da este mensaje:

MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). ( La consulta tardó 0.0012 seg )

Tambien lo intente asi y me obtiene un resultado pero me obtiene Cesar con un promedio de 8.23, lo cual no es el resultado correcto, y creo yo que lo que hace es sacar el promedio de todos los promedios....

SELECT A.nombre, A.matricula, AVG( N.calificacion ) promedio
FROM alumno A, alumnomateria N, materia M
WHERE A.matricula = N.matricula
AND N.claveMateria = M.claveMateria
HAVING MAX( promedio )
---------------------------------------------------------------------------------------------------

¿Podrian ayudarme a realizar esta consulta?

¿Que es lo que hago mal o en que me equivoco?


De antemano, gracias por sus respuestas.
Saludos

Última edición por Fozziepupus; 20/01/2012 a las 02:08 Razón: Tablas