123 lines
5 KiB
Transact-SQL
123 lines
5 KiB
Transact-SQL
DROP PROCEDURE IF EXISTS uspGetAtlag
|
|
GO
|
|
|
|
CREATE PROCEDURE uspGetAtlag
|
|
@pOsztalyCsoportId int
|
|
,@pTantargyId int
|
|
,@pAtlagMegjelenitesTipus int
|
|
,@pAtlagbaBeleszamitoOsztalyTipus int
|
|
,@pErtekelesTipusa int
|
|
AS BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE
|
|
@CurrentDate DATE = CONVERT(date, GETDATE())
|
|
|
|
IF (@pAtlagbaBeleszamitoOsztalyTipus = 1)
|
|
BEGIN
|
|
IF (@pAtlagMegjelenitesTipus = 1)
|
|
/* Összes jegy átlaga minden tanuló */
|
|
SELECT
|
|
te.C_TANTARGYID
|
|
,te.C_OSZTALYCSOPORTID
|
|
,ROUND(SUM(CAST(d.C_VALUE AS float) * CAST(ISNULL(ta.C_SULY, 100) AS float) / 100) / SUM(CAST(ISNULL(ta.C_SULY, 100) AS float) / 100), 2) AS Atlag
|
|
FROM T_TANULOERTEKELES te
|
|
INNER JOIN T_OSZTALYZATTIPUS ot ON te.C_ERTEKELESOSZTALYZATID = ot.ID
|
|
INNER JOIN T_DICTIONARYITEMBASE d ON ot.ID = d.ID
|
|
LEFT JOIN T_TANARIATLAGSULY ta ON te.C_ERTEKELESMODID = ta.C_ERTEKELESMODID
|
|
WHERE te.C_TANTARGYID = @pTantargyId
|
|
AND te.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
|
|
AND te.C_TIPUSID = @pErtekelesTipusa
|
|
AND te.C_ERTEKELESOSZTALYZATID IS NOT NULL
|
|
GROUP BY
|
|
te.C_TANTARGYID
|
|
,te.C_OSZTALYCSOPORTID
|
|
|
|
IF (@pAtlagMegjelenitesTipus = 2)
|
|
/* Átlagok átlaga minden tanuló */
|
|
SELECT
|
|
ertekeles.C_TANTARGYID
|
|
,ertekeles.C_OSZTALYCSOPORTID
|
|
,ROUND(AVG(ertekeles.Atlag), 2) AS Atlag
|
|
FROM (
|
|
SELECT
|
|
te.C_TANTARGYID
|
|
,te.C_OSZTALYCSOPORTID
|
|
,te.C_TANULOID
|
|
,ROUND(SUM(CAST(d.C_VALUE AS float) * CAST(ISNULL(ta.C_SULY, 100) AS float) / 100) / SUM(CAST(ISNULL(ta.C_SULY, 100) AS float) / 100), 2) AS Atlag
|
|
FROM T_TANULOERTEKELES te
|
|
INNER JOIN T_OSZTALYZATTIPUS ot ON te.C_ERTEKELESOSZTALYZATID = ot.ID
|
|
INNER JOIN T_DICTIONARYITEMBASE d ON ot.ID = d.ID
|
|
LEFT JOIN T_TANARIATLAGSULY ta ON te.C_ERTEKELESMODID = ta.C_ERTEKELESMODID
|
|
WHERE te.C_TANTARGYID = @pTantargyId
|
|
AND te.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
|
|
AND te.C_TIPUSID = @pErtekelesTipusa
|
|
AND te.C_ERTEKELESOSZTALYZATID IS NOT NULL
|
|
GROUP BY
|
|
te.C_TANTARGYID
|
|
,te.C_OSZTALYCSOPORTID,te.C_TANULOID
|
|
) ertekeles
|
|
GROUP BY
|
|
ertekeles.C_TANTARGYID
|
|
,ertekeles.C_OSZTALYCSOPORTID
|
|
END
|
|
|
|
IF (@pAtlagbaBeleszamitoOsztalyTipus = 2)
|
|
BEGIN
|
|
IF (@pAtlagMegjelenitesTipus = 1)
|
|
/* Összes jegy átlaga minden tanulóra, aki az osztályban jelenleg van */
|
|
SELECT
|
|
te.C_TANTARGYID
|
|
,te.C_OSZTALYCSOPORTID
|
|
,ROUND(SUM(CAST(d.C_VALUE AS float) * CAST(ISNULL(ta.C_SULY, 100) AS float) / 100) / SUM(CAST(ISNULL(ta.C_SULY, 100) AS float) / 100), 2) AS Atlag
|
|
FROM T_TANULOERTEKELES te
|
|
INNER JOIN T_TANEV Tanev ON Tanev.ID = te.C_TANEVID
|
|
INNER JOIN T_OSZTALYZATTIPUS ot ON te.C_ERTEKELESOSZTALYZATID = ot.ID
|
|
INNER JOIN T_DICTIONARYITEMBASE d ON ot.ID = d.ID
|
|
LEFT JOIN T_TANARIATLAGSULY ta ON te.C_ERTEKELESMODID = ta.C_ERTEKELESMODID
|
|
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = te.C_OSZTALYCSOPORTID AND tcs.C_TANULOID = te.C_TANULOID
|
|
AND tcs.C_BELEPESDATUM <= @CurrentDate
|
|
AND (tcs.C_KILEPESDATUM > @CurrentDate OR tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= Tanev.C_UTOLSOTANITASINAP)
|
|
WHERE te.C_TANTARGYID = @pTantargyId
|
|
AND te.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
|
|
AND te.C_TIPUSID = @pErtekelesTipusa
|
|
AND te.C_ERTEKELESOSZTALYZATID IS NOT NULL
|
|
GROUP BY
|
|
te.C_TANTARGYID
|
|
,te.C_OSZTALYCSOPORTID
|
|
|
|
IF (@pAtlagMegjelenitesTipus = 2)
|
|
/* Átlagok átlaga minden tanulóra, aki az osztályban jelenleg van */
|
|
SELECT
|
|
ertekeles.C_TANTARGYID
|
|
,ertekeles.C_OSZTALYCSOPORTID
|
|
,ROUND(AVG(ertekeles.Atlag), 2) AS Atlag
|
|
FROM (
|
|
SELECT
|
|
te.C_TANTARGYID
|
|
,te.C_OSZTALYCSOPORTID
|
|
,te.C_TANULOID
|
|
,ROUND(SUM(CAST(d.C_VALUE AS float) * CAST(ISNULL(ta.C_SULY, 100) AS float) / 100) / SUM(CAST(ISNULL(ta.C_SULY, 100) AS float) / 100), 2) AS Atlag
|
|
FROM T_TANULOERTEKELES te
|
|
INNER JOIN T_TANEV Tanev ON Tanev.ID = te.C_TANEVID
|
|
INNER JOIN T_OSZTALYZATTIPUS ot ON te.C_ERTEKELESOSZTALYZATID = ot.ID
|
|
INNER JOIN T_DICTIONARYITEMBASE d ON ot.ID = d.ID
|
|
LEFT JOIN T_TANARIATLAGSULY ta ON te.C_ERTEKELESMODID = ta.C_ERTEKELESMODID
|
|
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = te.C_OSZTALYCSOPORTID AND tcs.C_TANULOID = te.C_TANULOID
|
|
AND tcs.C_BELEPESDATUM <= @CurrentDate
|
|
AND (tcs.C_KILEPESDATUM > @CurrentDate OR tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= Tanev.C_UTOLSOTANITASINAP)
|
|
WHERE te.C_TANTARGYID = @pTantargyId
|
|
AND te.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
|
|
AND te.C_TIPUSID = @pErtekelesTipusa
|
|
AND te.C_ERTEKELESOSZTALYZATID IS NOT NULL
|
|
GROUP BY
|
|
te.C_TANTARGYID
|
|
,te.C_OSZTALYCSOPORTID,te.C_TANULOID
|
|
) ertekeles
|
|
GROUP BY
|
|
ertekeles.C_TANTARGYID
|
|
,ertekeles.C_OSZTALYCSOPORTID
|
|
END
|
|
|
|
END
|
|
GO
|