224 lines
8.3 KiB
Transact-SQL
224 lines
8.3 KiB
Transact-SQL
DROP FUNCTION IF EXISTS fnGetLemorzsolodottTanulokByFelhely
|
|
GO
|
|
|
|
CREATE FUNCTION [dbo].[fnGetLemorzsolodottTanulokByFelhely] (
|
|
@feladatEllatasiHelyId int
|
|
,@tanevId int
|
|
,@isFelevi int
|
|
,@osztalyzatTipusTypeID int = 44
|
|
)
|
|
RETURNS @FHHozTartozoTanulok TABLE(
|
|
TanuloId int
|
|
,Evfolyam int
|
|
,Neme int
|
|
,TanuloNev nvarchar(510)
|
|
,OktatasiAzonosito nvarchar(11)
|
|
,OsztalyNev nvarchar(510)
|
|
,OsztalyId int
|
|
,KozepesMiatt bit
|
|
,RontottMiatt bit
|
|
)
|
|
AS
|
|
BEGIN
|
|
|
|
DECLARE @Tanulok TABLE(
|
|
TanuloId int
|
|
,EvFolyam int
|
|
,Neme int
|
|
,NyomtatasiNev nvarchar(510)
|
|
,OktatasiAzonosito nvarchar(11)
|
|
,OsztalyNev nvarchar(510)
|
|
,OsztalyId int
|
|
)
|
|
DECLARE @Osztalyzatok TABLE(
|
|
Id int
|
|
,Ertek float
|
|
)
|
|
DECLARE @TanuloAtlagok TABLE(
|
|
TanuloId int
|
|
,AktualisAtlag float
|
|
,KorabbiAtlag float
|
|
)
|
|
DECLARE @KozepesAlattiTanulok TABLE(
|
|
TanuloId int
|
|
)
|
|
DECLARE @RontottTanulok TABLE(
|
|
TanuloId int
|
|
)
|
|
DECLARE @EslTantargyak TABLE(
|
|
TantargyId int
|
|
,TanevId int
|
|
)
|
|
-- Mi a "Közepes" értéke az adott feladatellátási helyen
|
|
DECLARE @FelHelyTipusKozepes float = 3.0
|
|
|
|
DECLARE @ErtekelesTipus int = IIF(@isFelevi = 0,1520,1519)
|
|
DECLARE @ExErtekelesTipus int = IIF(@ErtekelesTipus = 1520,1519,1520)
|
|
|
|
SELECT
|
|
@FelHelyTipusKozepes = onf.C_ESLKOZEPESATLAG
|
|
FROM T_FELADATELLATASIHELY fh
|
|
INNER JOIN T_OKTATASINEVELESIFELADAT onf ON onf.ID = fh.C_OKTATASINEVELESIFELADATTIPUS AND onf.C_ALTANEVID = fh.C_TANEVID AND onf.TOROLT = 'F'
|
|
WHERE fh.ID = @feladatEllatasiHelyId AND fh.TOROLT='F'
|
|
|
|
-- Az elõzõ tanév ID-ja
|
|
DECLARE @ElozoTanevId int = 0
|
|
|
|
IF @IsFelevi = 0
|
|
BEGIN
|
|
SET @ElozoTanevId = @tanevId
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @ElozoTanevId = ISNULL(elozotanev.ID,0)
|
|
FROM T_TANEV akttanev
|
|
INNER JOIN T_TANEV_OSSZES elozotanev ON elozotanev.TOROLT = 'F' AND elozotanev.C_SORSZAM = akttanev.C_SORSZAM-2
|
|
AND elozotanev.C_INTEZMENYID = akttanev.C_INTEZMENYID
|
|
WHERE akttanev.ID = @tanevId
|
|
END
|
|
|
|
DECLARE @BesorolasiDatum DATE = (SELECT TOP 1 C_DATUM from T_TANEVRENDJE tr WHERE C_NAPTIPUSA = IIF(@isFelevi = 0,1395,1400) AND C_TANEVID = @tanevid AND TOROLT='F')
|
|
|
|
INSERT INTO @Osztalyzatok
|
|
SELECT
|
|
ID
|
|
,CONVERT(float,C_VALUE)
|
|
FROM T_DICTIONARYITEMBASE
|
|
WHERE C_DICTIONARYTYPEID = @osztalyzatTipusTypeID AND C_TANEVID = @tanevId AND TOROLT='F'
|
|
|
|
INSERT INTO @EslTantargyak (
|
|
TantargyId
|
|
,TanevId
|
|
)
|
|
SELECT
|
|
tgy.ID
|
|
,@tanevId
|
|
FROM T_TANTARGY tgy
|
|
WHERE (tgy.C_ALTANTARGYKENTNYOMTATVANYBAN='T' OR tgy.C_FOTARGYE='T')
|
|
AND tgy.C_TANEVID = @tanevId AND tgy.TOROLT='F'
|
|
AND tgy.C_ESLTANTARGYKATEGORIAID IS NOT NULL
|
|
UNION
|
|
SELECT
|
|
tgy.ID
|
|
,@ElozoTanevId
|
|
FROM T_TANTARGY_OSSZES tgy
|
|
WHERE (tgy.C_ALTANTARGYKENTNYOMTATVANYBAN='T' OR tgy.C_FOTARGYE='T')
|
|
AND tgy.C_TANEVID = @ElozoTanevId AND tgy.TOROLT='F'
|
|
AND tgy.C_ESLTANTARGYKATEGORIAID IS NOT NULL
|
|
|
|
-- Egy adott FH-hoz tartozó tanulók kilistázása (évfolyamonként, nemenként) összevont osztályokkal együtt
|
|
INSERT INTO @Tanulok /*TODO:Tobb Osztaly*//*OM-1582*/
|
|
SELECT DISTINCT
|
|
tcs.C_TANULOID
|
|
,ISNULL(tta.C_TANULOEVFOLYAMTIPUSID,1307)
|
|
,f.C_NEME
|
|
,f.C_NYOMTATASINEV
|
|
,f.C_OKTATASIAZONOSITO
|
|
,ocs.C_NEV
|
|
,ocs.ID
|
|
FROM T_OSZTALYCSOPORT ocs
|
|
INNER JOIN T_OSZTALY o ON o.ID = ocs.ID AND o.TOROLT='F'
|
|
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = o.ID AND tcs.TOROLT = 'F'
|
|
AND @BesorolasiDatum >= tcs.C_BELEPESDATUM AND (@BesorolasiDatum < tcs.C_KILEPESDATUM OR tcs.C_KILEPESDATUM IS NULL)
|
|
INNER JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID = tcs.ID AND tta.TOROLT = 'F' /*Ha a tanuló összevont évfolyamú osztályba jár, de van megadva neki egyénileg évfolyam a tanügyi adataiban,*/
|
|
INNER JOIN T_FELHASZNALO f ON f.ID = tcs.C_TANULOID AND f.TOROLT='F' /*akkor azt kell megjeleníteni*/
|
|
INNER JOIN T_EVFOLYAMTIPUS evtip ON evtip.ID = ocs.C_EVFOLYAMTIPUSA AND evtip.TOROLT = 'F' AND evtip.C_ALTANEVID = ocs.C_TANEVID
|
|
WHERE ocs.C_FELADATELLATASIHELYID = @feladatEllatasiHelyId
|
|
AND ocs.C_TANEVID = @tanevId AND ocs.C_KEPZESIFORMA = 1096 --Nappali rendszerű iskolai oktatás
|
|
AND ocs.TOROLT = 'F'
|
|
AND evtip.C_ISOSSZEVONT = 'T'
|
|
UNION
|
|
SELECT DISTINCT
|
|
tcs.C_TANULOID
|
|
,ocs.C_EVFOLYAMTIPUSA
|
|
,f.C_NEME
|
|
,f.C_NYOMTATASINEV
|
|
,f.C_OKTATASIAZONOSITO
|
|
,ocs.C_NEV
|
|
,ocs.ID
|
|
FROM T_OSZTALYCSOPORT ocs
|
|
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.TOROLT = 'F'
|
|
AND @BesorolasiDatum >= tcs.C_BELEPESDATUM AND (@BesorolasiDatum < tcs.C_KILEPESDATUM OR tcs.C_KILEPESDATUM IS NULL)
|
|
INNER JOIN T_OSZTALY o ON o.id = tcs.C_OSZTALYCSOPORTID AND o.TOROLT='F'
|
|
INNER JOIN T_FELHASZNALO f ON f.id = tcs.C_TANULOID AND f.TOROLT='F'
|
|
INNER JOIN T_EVFOLYAMTIPUS evtip ON evtip.ID = ocs.C_EVFOLYAMTIPUSA AND evtip.TOROLT = 'F' AND evtip.C_ALTANEVID = ocs.C_TANEVID
|
|
WHERE ocs.C_FELADATELLATASIHELYID = @feladatEllatasiHelyId
|
|
AND ocs.C_TANEVID = @tanevId AND ocs.C_KEPZESIFORMA = 1096
|
|
AND ocs.TOROLT = 'F'
|
|
AND evtip.C_ISOSSZEVONT = 'F'
|
|
|
|
DELETE FROM @Tanulok WHERE Evfolyam BETWEEN 1303 AND 1306 --1-4 évfolyamok nem kellenek
|
|
-- Visszatérési tábla számítása
|
|
|
|
INSERT INTO @KozepesAlattiTanulok (TanuloId)
|
|
SELECT DISTINCT
|
|
fht.TanuloId
|
|
FROM T_TANULOERTEKELES te
|
|
INNER JOIN @EslTantargyak tgy ON tgy.TanevId = te.C_TANEVID AND tgy.TantargyId = te.C_TANTARGYID
|
|
INNER JOIN @Osztalyzatok o ON o.ID = te.C_ERTEKELESOSZTALYZATID
|
|
INNER JOIN @Tanulok fht ON fht.TanuloId = te.C_TANULOID
|
|
LEFT JOIN T_CSOPORT cs ON cs.ID=te.C_OSZTALYCSOPORTID AND cs.TOROLT='F'
|
|
WHERE te.C_TIPUSID = @ErtekelesTipus AND ISNULL(cs.C_TIPUSA,0) NOT IN (SELECT ID FROM T_CSOPORTTIPUS WHERE C_ISMUVESZETI = 'T' AND C_ALTANEVID = @tanevId) --alapf. műv okt csoportok osztályzatai nem kellenek
|
|
AND te.TOROLT='F' AND te.C_TANEVID = @tanevId
|
|
GROUP BY fht.TanuloId
|
|
HAVING ROUND(AVG(o.Ertek),2) < @FelHelyTipusKozepes
|
|
|
|
INSERT INTO @TanuloAtlagok (
|
|
TanuloId
|
|
,AktualisAtlag
|
|
,KorabbiAtlag
|
|
)
|
|
SELECT
|
|
fht.TanuloId
|
|
,(
|
|
SELECT
|
|
ROUND(AVG(o.Ertek),2)
|
|
FROM T_TANULOERTEKELES te
|
|
INNER JOIN @Osztalyzatok o ON o.ID = te.C_ERTEKELESOSZTALYZATID
|
|
INNER JOIN @EslTantargyak tgy ON tgy.Tantargyid = te.C_TANTARGYID AND tgy.TanevId = te.C_TANEVID
|
|
WHERE te.C_TANULOID = tanulo.ID AND te.C_TIPUSID = @ErtekelesTipus AND te.TOROLT='F' AND te.C_TANEVID = tanulo.C_TANEVID
|
|
AND NOT EXISTS(SELECT 1 FROM T_CSOPORT WHERE ID = te.C_OSZTALYCSOPORTID AND C_TIPUSA IN (SELECT ID FROM T_CSOPORTTIPUS WHERE C_ISMUVESZETI = 'T' AND C_ALTANEVID = @tanevId))
|
|
) AktualisAtlag
|
|
,(
|
|
SELECT
|
|
ROUND(AVG(o.Ertek),2)
|
|
FROM T_TANULOERTEKELES_OSSZES te
|
|
INNER JOIN @Osztalyzatok o ON o.ID = te.C_ERTEKELESOSZTALYZATID
|
|
INNER JOIN @EslTantargyak tgy ON tgy.Tantargyid = te.C_TANTARGYID AND tgy.TanevId = te.C_TANEVID
|
|
WHERE te.C_TANULOID = extanulo.ID AND te.C_TIPUSID = @ExErtekelesTipus AND te.TOROLT = 'F' AND te.C_TANEVID = extanulo.C_TANEVID
|
|
AND NOT EXISTS(SELECT 1 FROM T_CSOPORT_OSSZES WHERE ID = te.C_OSZTALYCSOPORTID AND C_TIPUSA IN (SELECT ID FROM T_CSOPORTTIPUS WHERE C_ISMUVESZETI = 'T' AND C_ALTANEVID = @tanevId) AND TOROLT='F')
|
|
) KorabbiAtlag
|
|
FROM @Tanulok fht
|
|
INNER JOIN T_FELHASZNALO_OSSZES tanulo ON tanulo.ID = fht.TanuloId
|
|
INNER JOIN T_TANULO_OSSZES t ON t.ID = tanulo.ID
|
|
INNER JOIN T_FELHASZNALO_OSSZES extanulo ON tanulo.C_OKTATASIAZONOSITO = extanulo.C_OKTATASIAZONOSITO
|
|
AND extanulo.C_TANEVID = @ElozoTanevId AND extanulo.TOROLT = 'F'
|
|
INNER JOIN T_TANULO_OSSZES exT ON exT.ID = extanulo.ID
|
|
|
|
INSERT INTO @RontottTanulok (TanuloId)
|
|
SELECT DISTINCT
|
|
fht.TanuloId
|
|
FROM @Tanulok fht
|
|
INNER JOIN @TanuloAtlagok ta ON ta.TanuloId = fht.TanuloId
|
|
WHERE (ta.AktualisAtlag+1.1) <= ta.KorabbiAtlag
|
|
|
|
INSERT INTO @FhHozTartozoTanulok
|
|
SELECT
|
|
fht.TanuloId
|
|
,fht.Evfolyam
|
|
,fht.Neme
|
|
,fht.NyomtatasiNev
|
|
,fht.OktatasiAzonosito
|
|
,fht.Osztalynev
|
|
,fht.OsztalyId
|
|
,IIF(kozepes.TanuloId IS NULL, 0, 1)
|
|
,IIF(rontott.TanuloId IS NULL, 0, 1)
|
|
FROM @Tanulok fht
|
|
LEFT JOIN @KozepesAlattiTanulok kozepes ON kozepes.TanuloId = fht.TanuloId
|
|
LEFT JOIN @RontottTanulok rontott ON rontott.TanuloId = fht.TanuloId
|
|
WHERE (kozepes.TanuloId IS NOT NULL OR rontott.TanuloId IS NOT NULL)
|
|
|
|
RETURN
|
|
|
|
END
|
|
GO
|