Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/06/2014, 09:55
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Alumno con Nota Máxima por curso (Group By , Max)

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:

Código MySQL:
Ver original
  1. SELECT curso, MAX(nota) maxima_nota FROM tu_tabla GROUP BY curso.

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 original
  1. SELECT tu_tabla.nombre, tu_tabla.curso, tu_tabla.nota
  2. FROM tu_tabla
  3. (Aquí pones la subconsulta anterior) ON
  4. (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