MySQL - Ayuda con una consulta

   
Vista:

Ayuda con una consulta

Publicado por SePeke (2 intervenciones) el 17/03/2014 02:00:22
Saludos,
Tengo un problema que no consigo solucionar por muchas vueltas que le de. La tabla que tengo es de notas de alumnos. De modo que la tabla tiene (ID,CODIGO_EXAMEN,ALUMNO,NOTA)

Quiero hace una SELECT que me muestre los alumnos que han aprobado cada examen. Mi idea es algo asi:

SELECT CODIGO_EXAMEN, COUNT(*) APROBADOS
FROM tabla
WHERE NOTA >= 5
GROUP BY CODIGO_EXAMEN

Mi problema es que si hay un examen que no haya aprobado ningun alumno, no aparece dicho examen. Lo que intento obtener es un valor de 0 para los examenes que no tengan ningun alumno aprobado de modo que el resultado fuera algo asi..

CODIGO_EXAMEN - / - APROBADOS
---------- 1 ------------------------ 6 ----------
---------- 2 ------------------------ 4 ----------
---------- 3 ------------------------ 0 ----------
---------- 4 ------------------------ 8 ----------

Supongo que se podra hacer añadiendole alguna condicion mas al WHERE o usando un UNION, pero no consigo solucionarlo. Espero que puedan ayudarme.

Muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con una consulta

Publicado por Juan Manuel Castañeda (59 intervenciones) el 20/03/2014 23:37:37
SELECT CODIGO_EXAMEN, COUNT(*) APROBADOS
FROM tabla
WHERE NOTA >= 5
GROUP BY CODIGO_EXAMEN
UNION
SELECT CODIGO_EXAMEN, COUNT(*) APROBADOS
FROM tabla
WHERE NOTA < 5
GROUP BY CODIGO_EXAMEN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con una consulta

Publicado por SePeke (2 intervenciones) el 24/03/2014 13:29:07
Gracias por la ayuda, aunque al final he conseguido resolverlo. Dejo la solución por si le pudiera interesar a alguien. Un saludo!

(SELECT examen, sum( ifnull( nota, 0 ) ) aprobados
FROM tabla
GROUP BY examen
HAVING sum( ifnull( nota, 0 ) ) = 0)

UNION

(SELECT examen, count(*) aprobados
FROM tabla
WHERE nota >= 5
GROUP BY examen)

ORDER BY examen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Ayuda con una consulta

Publicado por xve (898 intervenciones) el 24/03/2014 15:05:36
Gracias por compartirlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar