Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/12/2014, 22:14
Avatar de anserk
anserk
 
Fecha de Ingreso: noviembre-2014
Mensajes: 9
Antigüedad: 10 años
Puntos: 0
Pregunta Uso de COUNT y quinto superior

Hola gente de esta maravillosa comunidad, una vez más vengo por ayuda y espero que puedan brindármela.

Teniendo la siguiente tabla

ID_ALUMNO --- Nombre --- Semestre --- Promedio
01 ----------- Juan ------ 1 ---------- 16.74
02 ----------- John ------ 1 ---------- 15.07
03 ----------- Pepe ----- 1 ---------- 14.32
04 ----------- Carlos ---- 1 ---------- 12.29
05 ----------- Cesar ---- 1 ---------- 12.00
06 ----------- Peter ---- 2 ---------- 15.00
07 ----------- Max ---- 2 ---------- 14.00
08 ----------- Jorge ---- 2 ---------- 17.00
...

Quisiera hallar el quinto superior (siendo este el "total de alumnos/5"). Para ello usé la clausula COUNT para saber el número de alumnos de un determinado semestre, para luego dividirlo entre 5.
Ahora quiero mostrar los primeros xxx alumnos que están dentro de este quinto superior

Código SQL:
Ver original
  1. DECLARE @var1 INT
  2. SET @var1 = (SELECT COUNT(semestre)/5 FROM Alumno WHERE Alumno.semestre=1)
  3.  
  4. SELECT top (@var1) * FROM Alumno
  5. WHERE Alumno.semestre = 1
  6. ORDER BY Promedio DESC

Usando ese código he logrado mostrar los primeros xxx alumnos pero solo del semestre "1", y lo que busco es mostrar también los de "2" semestre, intenté usar la CLAUSULA UNION, pero debido al ORDER BY, no me deja, así que al final realicé lo siguiente:

Código SQL:
Ver original
  1. DECLARE @var1 INT, @var2 INT
  2. SET @var1 = (SELECT COUNT(semestre)/5 FROM Alumno WHERE Alumno.semestre=1)
  3. SET @var2 = (SELECT COUNT(semestre)/5 FROM Alumno WHERE Alumno.semestre=2)
  4.  
  5. SELECT top (@var1) * FROM Alumno
  6. WHERE Alumno.semestre = 1
  7. UNION
  8. SELECT top (@var2) * FROM Alumno
  9. WHERE Alumno.semestre = 2
  10. ORDER BY Promedio DESC

Pero el resultado no es el que debería, espero puedan ayudarme a encontrar una forma de realizar la consulta que estoy buscando.