[ Foro de SQL (y MySQL) ]

Consulta Sql Para Obtener Cuadro de Honor

15-May-2015 06:13
Jaime Ariel Mariscal
4 Respuestas

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


15-May-2015 22:28
Reynaldo Bernard De Dios De La Cruz

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.


16-May-2015 11:00
Nacho Cabanes (+32)

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


18-May-2015 09:12
Jaime Ariel Mariscal

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.


18-May-2015 19:22
Nacho Cabanes (+32)

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.)