Hola albertoshu:
Cita: He intentado con GROUP BY, MAX, Subconsultas, pero la verdad, no lo saco.
Dices que has tratado de varias formas, sin embargo no nos pones ninguna de las consultas ni tampoco nos dices qué está mal en esas consultas... es decir, si existe algún error o simplemente no obtienes el valor esperado.
Esta es una de las consultas más básicas en el ambiente de BD's y hay muchas formas de resolverla, me parece extraño que no hayas encontrado en este foro o en SAN GOOGLE algún ejemplo que te ayudara a resolver el problema...
Básicamente se resuelve en dos partes... una es obtener la máxima calificación para cada curso y otra donde filtras los alumnos que tengan esa calificación...
La primer parte, tal como lo infieres se hace con un MAX-GROUP BY, es decir, algo como esto:
Esto te dará entonces la máxima calificación para cada curso... ahora bien, como lo que a ti te interesa es saber el nombre del alumno que tiene esa máxima calificación, lo único que tienes que hacer es un filtro, usualmente se hace con INNER JOIN, pero puedes hacerlo con subconsultas...
Sería algo así:
Código MySQL:
Ver originalSELECT tu_tabla.nombre
, tu_tabla.curso
, tu_tabla.nota
(Aquí pones la subconsulta anterior
) ON (Aquí pones una condición que te indique que el curso
y la nota correspondan a la de la subconsulta
)
Has el intento... sería muy fácil colocarte la consulta ya resuelta, pero me gustaría que primero entendieras el concepto.
Si tienes problemas lo comentas y lo vemos
Saludos
Leo