Cita:
Iniciado por karenlorenadg Necesito el numero de orden del promedio general por cada estudiante y asi darle su lugar en el curso
Eso es sólo necesita una query básica con uso de la función AVG() y agrupar (GROUP BY). Lo único singular es que para obtener el orden numérico del resultado deberás utilizar variables de usuario.
O sea, imaginando los nombres de tablas y columnas:
Código SQL:
Ver originalSELECT AL.alumno_id, AL.nombre, AVG(EX.nota) Promedio
FROM alumno AL LEFT JOIN examen EX ON AL.alumno_id = EX.alumno_id
GROUP BY AL.alumno_id
Esto devuelve los promedios de cada uno, sin distincion de cursos o asignaturas.
Código SQL:
Ver originalSELECT AL.alumno_id, AL.nombre, AVG(EX.nota) Promedio
FROM alumno AL LEFT JOIN examen EX ON AL.alumno_id = EX.alumno_id
GROUP BY AL.alumno_id
ORDER BY Promedio DESC, nombre ASC
Así quedarían ordenados de mayor a menor los promedios y los nombres (en caso que hubiese promedios iguales entre dos o más alumnois).
El único truco consiste en la variable de usuario:
Código SQL:
Ver originalSELECT (@orden:=@orden+1) Orden, AL.alumno_id, AL.nombre, AVG(EX.nota) Promedio
FROM alumno AL LEFT JOIN examen EX ON AL.alumno_id = EX.alumno_id JOIN (SELECT @orden:=0) posicion
GROUP BY AL.alumno_id
ORDER BY Promedio DESC, nombre ASC
Nota: Estoy poniendo LEFT JOIN para tomar en cuenta la posibilidad de que haya alumnos que no tengan exámenes realizados.