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

[SOLUCIONADO] Alumno con Nota Máxima por curso (Group By , Max)

Estas en el tema de Alumno con Nota Máxima por curso (Group By , Max) en el foro de Mysql en Foros del Web. Hola, Tengo la siguiente tabla que lista las notas de cada alumno en en cada uno de los cursos en que se ha se ha ...
  #1 (permalink)  
Antiguo 06/06/2014, 09:35
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 1
Alumno con Nota Máxima por curso (Group By , Max)

Hola,

Tengo la siguiente tabla que lista las notas de cada alumno en en cada uno de los cursos en que se ha se ha inscrito.

| Nombre Alumno | Curso | Nota |


Qué consulta debo de hacer para obtener una tabla que muestre el alumno con la nota máxima en cada curso?

Pensaba que sería fácil, pero la verdad me he dado contra un muro. He intentado con GROUP BY, MAX, Subconsultas, pero la verdad, no lo saco.

Muchas gracias a todos por anticipado!
  #2 (permalink)  
Antiguo 06/06/2014, 09:55
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 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
  #3 (permalink)  
Antiguo 06/06/2014, 12:15
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Alumno con Nota Máxima por curso (Group By , Max)

Hola Leo,

Muchas Gracias por contestar tan rápido. No he puesto consultas porque las que he hecho no funcionan y entendía que el planteamiento estaba mal...te prometo que estado varias horas rezando a ese santo que dices pero no me ha iluminado.

De hecho me había planteado la solucion que propones, pero no se me había ocurrido poner el campo "nota" como indexador de las tablas. Ese ha sido el punto que me faltaba.

He estado probando con tu solución y...problema resuelto!!!

Muchísimas gracias!!!

Etiquetas: agrupar, group, maximo
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:04.