Ir al contenido


Foto

Alumnos por cursos dictados


  • Por favor identifícate para responder
9 respuestas en este tema

#1 el-mono

el-mono

    Advanced Member

  • Miembros
  • PipPipPip
  • 133 mensajes

Escrito 11 julio 2017 - 08:03

Buenos días gente, espero puedan ayudarme.

 

Me pidieron sacar una consulta para saber cuantos alumnos hay por cursos dictados en una Universidad. La consulta debería quedar así:

 

Nombre_Curso | Cantidad_ Alumnos | Cantidad_Activos | Cantidad_Inactivos | Cantidad_Inactivos_por_Mora

 

Curso 1                              28                                27                              1                                       0

Curso 2                              36                                30                              1                                       5 

Curso 3                              45                                40                              2                                       3   

 

 

 

La estructura de la tabla (Cursos_Dictado) de donde debo sacar esta consulta es la siguiente. El campo estado sale de una tabla(Cursos_Estados) donde están los distintos estados (Activo, Inactivo, Inactivo por Mora

 

Nro_Alumno  | Curso_Dictado | Estado

   125                             1                  1

   136                             1                  1

   256                             2                  2

   785                             2                  3

   963                             3                  1

   560                             3                  1

 

 

Mi duda es como armar una consulta para sumar los alumnos de acuerdo a los estados y poner los estados en forma horizontal. 

 

 

 

 

 


  • 0

#2 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 469 mensajes

Escrito 11 julio 2017 - 11:10

Si el curso es dictado la condicion sobre el estado es que debe ser activo.

 

Curso_Dictado referencia a un curso de una tabla cursos? Osea imagino tenes:

#CURSOS(de aca sacas el nombre del curso que necesitas)

#CURSOS_ESTADOS(aca evaluas la condicion de activo,etc)

#ESTADOS

La funcion count() cuenta cuantos registros de alumnos hay.

y te falta obtener el nombre de curso y los alumnos segun la condicion del curso, pero para eso debes usar un left join:

El modificador LEFT JOIN (unir por la izquierda) significa lo siguiente: “devuélveme todas las filas de la tabla de la izquierda y solamente las filas de la tabla de la derecha cuyo valor también exista en la tabla de la izquierda”.


sql
  1. SELECT COUNT(Nro_Alumno),idCurso,Nombre_Curso FROM Cursos LEFT JOIN Curso_Dictado ON Cursos.idCurso=
  2. Curso_Dictado.idCurso GROUP BY Estado;

No tengo compilador de firebird pero pruebalo y comentas


  • 0

#3 el-mono

el-mono

    Advanced Member

  • Miembros
  • PipPipPip
  • 133 mensajes

Escrito 11 julio 2017 - 06:03

Gracias  Giulichajari.

 

El script me sirvió para obtener la cantidad de alumnos por Curso que se esta dictando. Lo que me falta es sumar de los alumnos por curso, cuantos están Inactivos por Mora. Esto saldría de la columna Estado.

 

Tendría que hacer una subconsulta ?


  • 0

#4 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 469 mensajes

Escrito 11 julio 2017 - 06:27

Gracias  Giulichajari.

 

El script me sirvió para obtener la cantidad de alumnos por Curso que se esta dictando. Lo que me falta es sumar de los alumnos por curso, cuantos están Inactivos por Mora. Esto saldría de la columna Estado.

 

Tendría que hacer una subconsulta ?

Podrias escribir o publicar una imagen de los resultados de la consulta?


  • 0

#5 el-mono

el-mono

    Advanced Member

  • Miembros
  • PipPipPip
  • 133 mensajes

Escrito 11 julio 2017 - 07:11

No se como pegar una imagen aquí, te dejo un enlace con al imagen:

 

http://www.mediafire...niowa/Query.png

 

Este es el Script que uso:


sql
  1. SELECT gcda.curso_dictado, gc.nombre, COUNT(gcda.alumno) AS Cantidad_Alumnos FROM cursos_dictado_alumno gcda
  2. LEFT JOIN Alumnos a ON gcda.alumno = a.clave
  3. LEFT JOIN cursos gc ON gcda.curso_dictado = gc.id
  4. LEFT JOIN ESTADO_CURSADO gec ON gcda.estado = gec.id
  5. GROUP BY gcda.estado , gcda.curso_dictado, gc.nombre


  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.139 mensajes
  • LocationMéxico

Escrito 11 julio 2017 - 09:14

 

No se como pegar una imagen aquí, te dejo un enlace con al imagen:

 

 

 

Hola

 

La página donde la has subido no permite acceso directo, por eso es que  no se puede mostrar con el icono de imagen del menú de opciones.

 

Así se muestra:

 

Query.png

 

Saludos


  • 0

#7 el-mono

el-mono

    Advanced Member

  • Miembros
  • PipPipPip
  • 133 mensajes

Escrito 12 julio 2017 - 06:04

Lo subí google Drive, espero se pueda ver ahora.

 

https://drive.google...iew?usp=sharing


  • 0

#8 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 12 julio 2017 - 06:33

Saludos.
 
Esto tal vez te sirva:

sql
  1. SELECT CU.DESCRIPCION,
  2. COUNT(DISTINCT CD.Nro_Alumno) AS CANTIDAD_ALUMNO,
  3. SUM(CASE WHEN CD.ESTADO = 1 THEN 1 ELSE 0 END) CANTIDAD_ACTIVOS,
  4. SUM(CASE WHEN CD.ESTADO = 2 THEN 1 ELSE 0 END) CANTIDAD_INACTIVOS,
  5. SUM(CASE WHEN CD.ESTADO = 3 THEN 1 ELSE 0 END) CANTIDAD_INACTIVOS_MORA
  6. FROM Cursos_Dictado CD
  7. JOIN Cursos CU ON CD.Curso_Dictado = CU.Curso_Dictado
  8. GROUP BY CU.DESCRIPCION
  9. ORDER BY CU.DESCRIPCION


  • 0

#9 el-mono

el-mono

    Advanced Member

  • Miembros
  • PipPipPip
  • 133 mensajes

Escrito 12 julio 2017 - 09:06

:ap:  :ap:  :ap:  :ap:  :ap:

 

Muchas gracias Rolphy, es lo que necesito.


  • 0

#10 el-mono

el-mono

    Advanced Member

  • Miembros
  • PipPipPip
  • 133 mensajes

Escrito 12 julio 2017 - 09:07

Gracias a todos por su tiempo y dedicación.


  • 0