Muy Buenas Noches..
Les envió un saludo muy cordial, a modo de realizar mi consulta, quiero aprovechar la información que tengo en una tabla sobre unas notas de diferentes materias llevadas en un colegio y sus promedios, para obtener el cuadro de honor que consiste en, sacar las 1ª y 2ª notas más altas de cada curso, le di todas las vueltas posibles según mis conocimientos y no logro obtener los resultados necesarios, más allá de este primer inconveniente surge otro que es, en algunos cursos pueden existir dos e incluso tres estudiantes que tengas la 1ª nota más alta y/o la 2ª mejor, los cuales tiene también que salir en la lista a obtener.
Sin dudar de su apoyo me despido reiterando mis saludos y agradeciendo por sus soportes.
Atte. : Jaime Mariscal
Tienes que realizar una consulta de SELECT atributo(s) FROM nombre_tabla WHERE atributo </=/> numero_calificacion.
No conozco tu tabla pero creo que esto es lo que buscas, para mayor compresión puedes googlear la clásula SELECT FROM WHERE.
Puedes saber la nota más alta con WHERE nota = MAX(nota)
Para saber la segunda, tercera y sucesivas notas más altas que realmente existan, te puedes bastar con un ORDER BY nota DESC
Tengo una vista similar a esta ordenada por cursos y promedios: el nombre de mi vista es evaluaciones
http://www.subirimagenes.net/i/150518084923605600.jpg
y requiero obtener una tabla como la siguiente:
http://www.subirimagenes.net/i/150518085140935588.jpg
podria ser obtenidos en 1 o dos consultas
Les aviso que ya consegui realizar la primera parte.. La obtencion de las 1ras mejores notas, lo que aun no puedo sacar son las 2das mejores, si me pudieran ayudar les estare muy agradecido, por si alguien requiera la misma informacion comparto la primera solucion que obtuve para obtener los 1ras mejores notas.
Por cierto estoy trabajando sobre una vista que contiene los nombres completos de los estudantes, un id estudiante, su curso y los promedios correspondientes, de lo cual solo requiero el nombre, el curso y la nota, para lo cual utilizo lo siguiente:
SELECT a.Curso, a.NombreEstudiante, a.Promedio, b.Promedio
FROM evaluaciones a, ( SELECT max( promedio ) AS promedio
FROM evaluaciones
GROUP BY curso ) b
WHERE (a.Promedio = b.Promedio)
GROUP BY a.Curso
Asi de simple, espero me puedan ayudar con los faltantes 2dos lugares, gracias de antemano.
Por mi parte tambien seguire insistiendo y si lo consigo lo publicare.
La forma más simple de calcular el segundo mayor valor es ésta:
SELECT MAX( promedio )
FROM evaluaciones
WHERE promedio < ( SELECT MAX( promedio )
FROM evaluaciones )
(también podrías usar NOT IN en vez de "menor que")
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)