209 lines
7.8 KiB
Transact-SQL
209 lines
7.8 KiB
Transact-SQL
DROP PROCEDURE IF EXISTS [uspGetDolgozatErtekelesAtlag]
|
|
GO
|
|
|
|
CREATE PROCEDURE [uspGetDolgozatErtekelesAtlag]
|
|
@pIntezmenyId int
|
|
,@pTanevId int
|
|
,@pOsztalyCsoportId int
|
|
,@pTantargyId int
|
|
,@pErtekelesModIdString nvarchar(300)
|
|
,@pTanarId int
|
|
,@pErtekelesTema nvarchar(255)
|
|
,@pAtlagTol float
|
|
,@pAtlagIg float
|
|
,@pErdemjegy5Tol int
|
|
,@pErdemjegy5Ig int
|
|
,@pErdemjegy4Tol int
|
|
,@pErdemjegy4Ig int
|
|
,@pErdemjegy3Tol int
|
|
,@pErdemjegy3Ig int
|
|
,@pErdemjegy2Tol int
|
|
,@pErdemjegy2Ig int
|
|
,@pErdemjegy1Tol int
|
|
,@pErdemjegy1Ig int
|
|
,@pNemIrtDolgozatotTol int
|
|
,@pNemIrtDolgozatotIg int
|
|
,@pSzuperOsztalyfonok int
|
|
,@pDatum datetime
|
|
|
|
AS BEGIN
|
|
SET NOCOUNT ON;
|
|
DECLARE @preSql NVARCHAR(MAX), @sql NVARCHAR(MAX) = '';
|
|
SET @pErtekelesTema = REPLACE(@pErtekelesTema, ' ', '');
|
|
|
|
SET @preSql = IIF(@pSzuperOsztalyfonok = 1, '', N'
|
|
CREATE TABLE #OsztalyCsoportokTantargyak (
|
|
OsztalyCsoportId INT
|
|
,OsztalyCsoportNev nvarchar(255)
|
|
,TantargyId INT
|
|
,PRIMARY KEY(OsztalyCsoportId,TantargyId)
|
|
)
|
|
|
|
INSERT INTO #OsztalyCsoportokTantargyak (
|
|
OsztalyCsoportId
|
|
,OsztalyCsoportNev
|
|
,TantargyId
|
|
)
|
|
EXEC uspGetTanarAltalErtekelhetoCsoportokTantargyak
|
|
@pTanarId
|
|
,@pTanevId
|
|
,@pDatum
|
|
');
|
|
|
|
SET @sql += @preSql;
|
|
|
|
SET @preSql = '
|
|
CREATE TABLE #Letszam (
|
|
C_NAPDATUMA DATETIME
|
|
,C_OSZTALYCSOPORTID INT
|
|
,Letszam INT
|
|
,PRIMARY KEY(C_NAPDATUMA, C_OSZTALYCSOPORTID)
|
|
)
|
|
|
|
INSERT INTO #Letszam(C_NAPDATUMA, C_OSZTALYCSOPORTID, Letszam)
|
|
SELECT nn.C_NAPDATUMA, tcs.C_OSZTALYCSOPORTID, COUNT(1) AS Letszam
|
|
FROM T_TANULOCSOPORT_OSSZES tcs
|
|
INNER JOIN T_NAPTARINAP_OSSZES nn ON nn.C_NAPDATUMA >= tcs.C_BELEPESDATUM
|
|
AND (nn.C_NAPDATUMA <= tcs.C_KILEPESDATUM OR tcs.C_KILEPESDATUM IS NULL)
|
|
AND nn.TOROLT = ''F''
|
|
WHERE nn.C_TANEVID = @pTanevId
|
|
' + IIF(@pOsztalyCsoportId IS NULL, '', 'AND tcs.C_OSZTALYCSOPORTID = @pOsztalyCsoportId') + '
|
|
AND tcs.C_TANEVID = @pTanevId
|
|
AND tcs.TOROLT = ''F''
|
|
GROUP BY nn.C_NAPDATUMA, tcs.C_OSZTALYCSOPORTID
|
|
';
|
|
|
|
SET @sql += @preSql;
|
|
|
|
SET @preSql = N'
|
|
SELECT
|
|
sub.Datum
|
|
,sub.OsztalyCsoport
|
|
,sub.OsztalyCsoportId
|
|
,sub.ErtekelesTema
|
|
,tgy.C_NEV AS TantargyNev
|
|
,sub.TantargyId
|
|
,sub.ErtekelesModId
|
|
,sub.Erdemjegy1
|
|
,sub.Erdemjegy2
|
|
,sub.Erdemjegy3
|
|
,sub.Erdemjegy4
|
|
,sub.Erdemjegy5
|
|
,sub.Cnt IrtakDolgozatot
|
|
,(letszam.Letszam - sub.Cnt) NemIrtakDolgozatot
|
|
,CONVERT(nvarchar(255), sub.Cnt) + ''/'' + CONVERT(nvarchar(255), letszam.Letszam) AS IrtakDolgozatotArany
|
|
,ROUND(Total / CAST(Cnt AS Float), 2) AS Atlag
|
|
,letszam.Letszam
|
|
FROM (
|
|
SELECT
|
|
s.C_DATUM AS Datum
|
|
,s.OsztalyCsoportNev AS OsztalyCsoport
|
|
,s.C_OSZTALYCSOPORTID AS OsztalyCsoportId
|
|
,s.C_ERTEKELESTEMA AS ErtekelesTema
|
|
,s.C_TANTARGYID AS TantargyId
|
|
,s.C_ERTEKELESMODID AS ErtekelesModId
|
|
,s.[1501] AS Erdemjegy1
|
|
,s.[1502] AS Erdemjegy2
|
|
,s.[1503] AS Erdemjegy3
|
|
,s.[1504] AS Erdemjegy4
|
|
,s.[1505] AS Erdemjegy5
|
|
,s.[1501] + s.[1502] + s.[1503] + s.[1504] + s.[1505] AS Cnt
|
|
,s.[1501] + s.[1502] * 2 + s.[1503] * 3 + s.[1504] * 4 + s.[1505] * 5 AS Total
|
|
FROM (
|
|
SELECT
|
|
er.C_DATUM
|
|
,er.C_OSZTALYCSOPORTID
|
|
,er.C_ERTEKELESTEMA
|
|
,er.C_TANTARGYID
|
|
,er.C_ERTEKELESOSZTALYZATID
|
|
,er.C_ERTEKELESMODID
|
|
,ocs.C_NEV AS OsztalyCsoportNev
|
|
FROM T_TANULOERTEKELES_OSSZES er
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = er.C_OSZTALYCSOPORTID AND ocs.TOROLT=''F'' AND ocs.C_TANEVID = er.C_TANEVID
|
|
INNER JOIN T_ERTEKELESTIPUS_OSSZES ertip ON ertip.ID = er.C_TIPUSID AND ertip.TOROLT = ''F'' AND ertip.C_ALTANEVID = er.C_TANEVID
|
|
WHERE er.C_TANEVID = @pTanevId
|
|
AND er.TOROLT = ''F''
|
|
AND ertip.C_ISEGYSZERADHATO = ''F''
|
|
AND er.C_ERTEKELESTEMA IS NOT NULL
|
|
AND er.C_ERTEKELESOSZTALYZATID IS NOT NULL
|
|
' + IIF(@pSzuperOsztalyfonok = 1, N'', N'AND (EXISTS(SELECT 1 FROM #OsztalyCsoportokTantargyak ocst WHERE ocst.OsztalyCsoportId = er.C_OSZTALYCSOPORTID AND ocst.TantargyId = er.C_TANTARGYID))') + N'
|
|
' + IIF(@pTantargyId IS NULL, N'', N'AND er.C_TANTARGYID = @pTantargyId') + N'
|
|
' + IIF(@pErtekelesTema IS NULL, N'', N'AND REPLACE(er.C_ERTEKELESTEMA,'' '','''') LIKE ''%' + @pErtekelesTema + '%''') + N'
|
|
' + IIF(@pOsztalyCsoportId IS NULL, N'', N'AND er.C_OSZTALYCSOPORTID = @pOsztalyCsoportId') + N'
|
|
' + IIF(@pErtekelesModIdString IS NULL, N'', N'AND er.C_ERTEKELESMODID IN ('+ @pErtekelesModIdString +')') + N'
|
|
) x
|
|
PIVOT (COUNT(C_ERTEKELESOSZTALYZATID) FOR C_ERTEKELESOSZTALYZATID IN ([1501], [1502], [1503], [1504], [1505])
|
|
) s
|
|
WHERE 1 = 1' + '
|
|
' + IIF(@pErdemjegy5Tol IS NULL, N'', 'AND s.[1505] >= @pErdemjegy5Tol') + '
|
|
' + IIF(@pErdemjegy5Ig IS NULL, N'', 'AND s.[1505] <= @pErdemjegy5Ig') + '
|
|
' + IIF(@pErdemjegy4Tol IS NULL, N'', 'AND s.[1504] >= @pErdemjegy4Tol') + '
|
|
' + IIF(@pErdemjegy4Ig IS NULL, N'', 'AND s.[1504] <= @pErdemjegy4Ig') + '
|
|
' + IIF(@pErdemjegy3Tol IS NULL, N'', 'AND s.[1503] >= @pErdemjegy3Tol') + '
|
|
' + IIF(@pErdemjegy3Ig IS NULL, N'', 'AND s.[1503] <= @pErdemjegy3Ig') + '
|
|
' + IIF(@pErdemjegy2Tol IS NULL, N'', 'AND s.[1502] >= @pErdemjegy2Tol') + '
|
|
' + IIF(@pErdemjegy2Ig IS NULL, N'', 'AND s.[1502] <= @pErdemjegy2Ig') + '
|
|
' + IIF(@pErdemjegy1Tol IS NULL, N'', 'AND s.[1501] >= @pErdemjegy1Tol') + '
|
|
' + IIF(@pErdemjegy1Ig IS NULL, N'', 'AND s.[1501] <= @pErdemjegy1Ig') + '
|
|
) sub
|
|
INNER JOIN T_TANTARGY_OSSZES tgy ON sub.TantargyId = tgy.ID AND tgy.TOROLT=''F''
|
|
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dTantargy ON tgy.C_TARGYKATEGORIA = dTantargy.ID AND dTantargy.C_TANEVID = @pTanevId AND dTantargy.TOROLT=''F''
|
|
INNER JOIN #Letszam letszam ON letszam.C_NAPDATUMA = sub.Datum
|
|
AND letszam.C_OSZTALYCSOPORTID = OsztalyCsoportId' + '
|
|
' + IIF(@pNemIrtDolgozatotTol IS NULL, N'', N'AND (letszam.Letszam - sub.Cnt) >= @pNemIrtDolgozatotTol') + '
|
|
' + IIF(@pNemIrtDolgozatotIg IS NULL, N'', N'AND (letszam.Letszam - sub.Cnt) <= @pNemIrtDolgozatotIg') + '
|
|
' + IIF(@pAtlagTol IS NULL, N'', N'AND ROUND(Total / CAST(Cnt AS Float), 2) >= @pAtlagTol') + '
|
|
' + IIF(@pAtlagIg IS NULL, N'', N'AND ROUND(Total / CAST(Cnt AS Float), 2) <= @pAtlagIg') + '
|
|
'
|
|
|
|
SET @sql += @preSql;
|
|
|
|
EXEC sp_executesql @sql, N'
|
|
@pIntezmenyId int
|
|
,@pTanevId int
|
|
,@pOsztalyCsoportId int
|
|
,@pTantargyId int
|
|
,@pTanarId int
|
|
,@pErtekelesModIdString nvarchar(300)
|
|
,@pErtekelesTema nvarchar(255)
|
|
,@pAtlagTol float
|
|
,@pAtlagIg float
|
|
,@pErdemjegy5Tol int
|
|
,@pErdemjegy5Ig int
|
|
,@pErdemjegy4Tol int
|
|
,@pErdemjegy4Ig int
|
|
,@pErdemjegy3Tol int
|
|
,@pErdemjegy3Ig int
|
|
,@pErdemjegy2Tol int
|
|
,@pErdemjegy2Ig int
|
|
,@pErdemjegy1Tol int
|
|
,@pErdemjegy1Ig int
|
|
,@pNemIrtDolgozatotTol int
|
|
,@pNemIrtDolgozatotIg int
|
|
,@pSzuperOsztalyfonok int
|
|
,@pDatum datetime'
|
|
,@pIntezmenyId = @pIntezmenyId
|
|
,@pTanevId = @pTanevId
|
|
,@pOsztalyCsoportId = @pOsztalyCsoportId
|
|
,@pTantargyId = @pTantargyId
|
|
,@pErtekelesModIdString = @pErtekelesModIdString
|
|
,@pTanarId = @pTanarId
|
|
,@pErtekelesTema = @pErtekelesTema
|
|
,@pAtlagTol = @pAtlagTol
|
|
,@pAtlagIg = @pAtlagIg
|
|
,@pErdemjegy5Tol = @pErdemjegy5Tol
|
|
,@pErdemjegy5Ig = @pErdemjegy5Ig
|
|
,@pErdemjegy4Tol = @pErdemjegy4Tol
|
|
,@pErdemjegy4Ig = @pErdemjegy4Ig
|
|
,@pErdemjegy3Tol = @pErdemjegy3Tol
|
|
,@pErdemjegy3Ig = @pErdemjegy3Ig
|
|
,@pErdemjegy2Tol = @pErdemjegy2Tol
|
|
,@pErdemjegy2Ig = @pErdemjegy2Ig
|
|
,@pErdemjegy1Tol = @pErdemjegy1Tol
|
|
,@pErdemjegy1Ig = @pErdemjegy1Ig
|
|
,@pNemIrtDolgozatotTol = @pNemIrtDolgozatotTol
|
|
,@pNemIrtDolgozatotIg = @pNemIrtDolgozatotIg
|
|
,@pSzuperOsztalyfonok = @pSzuperOsztalyfonok
|
|
,@pDatum = @pDatum
|
|
END
|
|
GO
|