sql Adecuaciónderendimiento para mostrar porcentaje de inasistenciaengráficenpanel de Prof
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql Adecuaciónderendimiento para mostrar porcentaje de inasistenciaengráficenpanel de Prof相关的知识,希望对你有一定的参考价值。
----------------------------INICIO PROCEDIMIENTO ------------------------
IF OBJECT_ID('spObtenerAsistenciaGruposProfesor', 'P') IS NOT NULL
DROP PROC spObtenerAsistenciaGruposProfesor
GO
CREATE PROCEDURE spObtenerAsistenciaGruposProfesor
@idProfesor INT ,
@iFolioPeriodo BIGINT
/* --------------------------------------------------------------------------------------------------------------
FECHA | AUTOR |DESCRIPCION
28/Mar/2017 | Luis Bernal |
--------------------------------------------------------------------------------------------------------------*/
AS
BEGIN
SET NOCOUNT ON;
SET LANGUAGE spanish;
SET DATEFORMAT MDY;
SET DATEFIRST 7;
--hugo
SELECT T.idAsignatura ,
T.sAsignatura ,
CONVERT(DOUBLE PRECISION, SUM(T.totalAsistentes))
/ CONVERT(DOUBLE PRECISION, SUM(T.totalInscritos)) * 100 AS dPorcentaje
FROM ( SELECT COUNT(cta.iFolioInscripcion) AS totalAsistentes ,
ci.dFecha ,
cta.idAsignatura ,
ca.sAsignatura ,
dbo.fnTotalAlumnosGrupo(cta.idGrupo,
cgct.iFolioPeriodo) totalInscritos
FROM dbo.Ctrl_Inasistencias ci
INNER JOIN dbo.Ctrl_TrayectoriaAcademica cta ON cta.iFolio = ci.iFolioTrayectoria
INNER JOIN dbo.Ctrl_GrupoClaseTentativo cgct ON cgct.idAsignatura = cta.idAsignatura
AND cgct.idGrupo = cta.idGrupo
INNER JOIN dbo.Cat_Asignaturas ca ON ca.idAsignatura = cta.idAsignatura
LEFT JOIN dbo.Ctrl_GrupoClaseTentativoCotitulares cgctc ON cgctc.iFolioGrupoClaseTentativo = cgct.iFolio
WHERE cgct.iFolioPeriodo = @iFolioPeriodo
AND ( cgct.idProfesor = @idProfesor
OR cgctc.idProfesor = @idProfesor
)
--AND dbo.fnTotalAlumnosGrupo(cta.idGrupo, cgct.iFolioPeriodo) > 0 ** Se comenta esta condición y se considera en la clausula HAVING para mejorar considerablemente el rendimiento 28/Mar/2017 LBV
GROUP BY ci.dFecha ,
cta.idAsignatura ,
ca.sAsignatura ,
dbo.fnTotalAlumnosGrupo(cta.idGrupo, cgct.iFolioPeriodo)
HAVING dbo.fnTotalAlumnosGrupo(cta.idGrupo, cgct.iFolioPeriodo) > 0
) AS T
GROUP BY T.sAsignatura,T.idAsignatura
ORDER BY T.sAsignatura
END
以上是关于sql Adecuaciónderendimiento para mostrar porcentaje de inasistenciaengráficenpanel de Prof的主要内容,如果未能解决你的问题,请参考以下文章