none
Uso correcto del GROUP BY con SUM() RRS feed

  • Pregunta

  • Hola, buenas tardes, tengo una duda sobre cual es el uso correcto del GROUP BY, soy un novato en Bases de Datos con SQL:

    Pasa lo siguiente, quiero realizar una suma de la columna NumeroAlumnos con respecto a los talleres/laboratorios y carreras: tengo la siguiente sintaxis:

    SELECT RegistroUsuario.IdRegistroUsuario, TallerLaboratorio.IdTallerLab, TallerLaboratorio.Nombre as TallerLaboratorio, Carrera.IdCarrera, Carrera.Nombre as Carrera, sum(RegistroUsuario.NumeroAlumnos) as NumeroAlumnos, Actividad.IdActividad, Actividad.Nombre as Actividad, Docente.IdDocente, Docente.NombreCompleto as Docente FROM SCOUTL.Actividad INNER JOIN SCOUTL.RegistroUsuario ON SCOUTL.Actividad.IdActividad = SCOUTL.RegistroUsuario.IdActividadFK INNER JOIN SCOUTL.Carrera ON SCOUTL.RegistroUsuario.IdCarreraFK = SCOUTL.Carrera.IdCarrera INNER JOIN SCOUTL.Docente ON SCOUTL.RegistroUsuario.IdDocenteFK = SCOUTL.Docente.IdDocente INNER JOIN SCOUTL.TallerLaboratorio ON SCOUTL.RegistroUsuario.IdTallerLabFK = SCOUTL.TallerLaboratorio.IdTallerLab where SCOUTL.RegistroUsuario.Fecha between '2018-01-16' and '2018-02-19' group by RegistroUsuario.IdRegistroUsuario, TallerLaboratorio.IdTallerLab, TallerLaboratorio.Nombre, Carrera.IdCarrera, Carrera.Nombre, Actividad.IdActividad, Actividad.Nombre, Docente.IdDocente, Docente.NombreCompleto order by SCOUTL.TallerLaboratorio.IdTallerLab, SCOUTL.Carrera.IdCarrera

    Pero, no me realiza la suma: lo que quiero conseguir en este caso es sumar las filas con IdTallerLab = 3 && IdCarrera = 8, ya me abrumo la cabeza, llevo rato intentandolo de otras manera y no consigo lograrlo. Por favor, ayudenme a aclarar este problema, no le entiendo muy bien!

    sábado, 24 de febrero de 2018 4:39

Respuestas

  • Hola Mateo:

    Group by realiza la suma por cada una de las diferencias que tengas en las columnas del agrupamiento.

    Tienes por tanto agrupada la suma por idUsuario, entonces sumará todos los registros donde idUsuario sea repetido.

    En resumidas cuentas, no sumará.

    Puedes hacerlo de muchas formas.

    Que tal si utilizas funciones de ventana con over.

    https://docs.microsoft.com/es-es/sql/t-sql/queries/select-over-clause-transact-sql

    Miralo que te ayudará mucho.

    Un saludo

    sábado, 24 de febrero de 2018 8:11