This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,162 @@
IF OBJECT_ID('[dbo].[fnGetLemorzsolodottTanulokByFelhely]') IS NOT NULL BEGIN
DROP FUNCTION [dbo].[fnGetLemorzsolodottTanulokByFelhely]
END
GO
-- A Funkció visszaadja a lemorzsolódás szempontjából releváns tanulók listáját az adott feladatellátási helyre, évfolymaonként és nemenként, valamint hogy
CREATE FUNCTION [dbo].[fnGetLemorzsolodottTanulokByFelhely] (@feladatEllatasiHelyId INT, @tanevId INT, @isFelevi INT)
RETURNS @retTable TABLE (
TanuloId INT PRIMARY KEY,
Evfolyam INT,
Neme INT,
TanuloNev nvarchar(max),
OktatasiAzonosito nvarchar(max),
TanuloOsztalyNev nvarchar(255),
IsKozepesMiatt INT,
IsRontasMiatt INT
)
BEGIN
-- Használt temporary táblák elkészítése
DECLARE @Evfolyamok TABLE
(Id INT, Evfolyam INT)
DECLARE @Osztalyzatok TABLE
(Id INT, Ertek FLOAT)
DECLARE @FHhozTartozoTanulok TABLE
(TanuloId INT, Evfolyam INT, Neme INT, TanuloNev nvarchar(max), OktatasiAzonosito nvarchar(max), TanuloOsztalyNev nvarchar(255))
DECLARE @TanuloAtlagok TABLE
(TanuloId INT, AktualisAtlag FLOAT, KorabbiAtlag FLOAT)
DECLARE @KozepesAlattiTanulok TABLE
(TanuloId INT)
DECLARE @RontottTanulok TABLE
(TanuloId INT)
-- Mi a "Közepes" értéke az adott feladatellátási helyen
DECLARE @FelHelyTipusKozepes FLOAT = 3.0
SELECT @FelHelyTipusKozepes =
IIF(
fh.C_OKTATASINEVELESIFELADATTIPUS IN (1160, 1161, 1162, 5435, 1176, 6463)
, 2.5
, 3.0
)
FROM T_FELADATELLATASIHELY fh
WHERE fh.ID = @feladatEllatasiHelyId AND fh.TOROLT = 'F'
-- Az elõzõ tanév ID-ja
DECLARE @ElozoTanevId INT = 0
SELECT @ElozoTanevId = ISNULL(elozotanev.ID,0)
FROM T_TANEV_OSSZES akttanev
INNER JOIN T_TANEV_OSSZES elozotanev ON elozotanev.C_INTEZMENYID = akttanev.C_INTEZMENYID AND elozotanev.TOROLT = 'F'
WHERE akttanev.ID = @tanevId
AND
(
CAST(SUBSTRING(akttanev.C_NEV, 1, PATINDEX('%[^0-9]%', akttanev.C_NEV) - 1) AS INT)-
CAST(SUBSTRING(elozotanev.C_NEV, 1, PATINDEX('%[^0-9]%', elozotanev.C_NEV) - 1) AS INT) = 1
)
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 @Evfolyamok
SELECT ID, Evfolyam FROM (SELECT DISTINCT id, CASE
WHEN ID IN (1307,1330,1334) THEN 1307 /* 5. évfolyam*/
WHEN ID IN (1308) THEN 1308 /* 6. évfolyam*/
WHEN ID IN (1309,1331,1335,7109) THEN 1309 /* 7. évfolyam*/
WHEN ID IN (1310,1324,7110) THEN 1310 /* 8. évfolyam*/
WHEN ID IN (1311,1316,1332,1333,1336,3018,3019,3020,6702,7111, 7112, 7113, 7114, 7127, 7128)
THEN 1311 /* 9. évfolyam*/
WHEN ID IN (1312,1323,6703,7115, 7116, 7117, 7118) THEN 1312 /* 10. évfolyam*/
WHEN ID IN (1313,1317,1325,3016,6704,7119, 7120, 7121, 7122) THEN 1313 /* 11. évfolyam*/
WHEN id in (1314,1318,1326,3017,3021,3022,1322,6520,6705,6818,7123, 7124, 7125, 7126)
THEN 1314 /* 12. évfolyam*/
WHEN ID IN (6471,6472,6473,6475) THEN 6471 /* KH 1. évfolyam */
WHEN ID IN (6474,6476) THEN 6474 /* KH 2. évfolyam */
WHEN ID IN (6477,6479,6481) THEN 6477 /* SzH 1. évfolyam */
WHEN ID IN (6478,6480,6482) THEN 6478 /* SzH 2. évfolyam */
ELSE NULL
END AS Evfolyam
FROM T_DICTIONARYITEMBASE
WHERE C_TYPE = 'EvfolyamTipus' AND C_TANEVID = @tanevId) Evfolyamok
WHERE Evfolyam IS NOT NULL
INSERT INTO @Osztalyzatok
SELECT ID, CONVERT(FLOAT,C_VALUE)
FROM T_DICTIONARYITEMBASE
WHERE C_TYPE = 'OsztalyzatTipus' AND C_TANEVID = @tanevId
-- Egy adott FH-hoz tartozó tanulók kilistázása (évfolyamonként, nemenként)
INSERT INTO @FHhozTartozoTanulok
SELECT DISTINCT
tcs.C_TANULOID,
evf.Evfolyam,
f.C_NEME,
f.C_NYOMTATASINEV,
f.C_OKTATASIAZONOSITO,
ocs.C_NEV
FROM T_OSZTALYCSOPORT ocs
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.TOROLT = 'F' AND tcs.C_TANEVID = @tanevId
AND tcs.C_BELEPESDATUM <= @BesorolasiDatum AND (tcs.C_KILEPESDATUM >= @BesorolasiDatum OR tcs.C_KILEPESDATUM IS NULL)
INNER JOIN T_OSZTALY o ON o.id = tcs.C_OSZTALYCSOPORTID AND (o.C_KEPZESIFORMA IN (1096,5445) OR ocs.C_EVFOLYAMTIPUSA IN (6471,6472,6473,6475,6474,6476,6477,6479,6481,6478,6480,6482))
INNER JOIN T_FELHASZNALO f ON f.id = tcs.C_TANULOID
INNER JOIN @Evfolyamok evf ON evf.Id = ocs.C_EVFOLYAMTIPUSA
WHERE
ocs.C_FELADATELLATASIHELYID = @feladatEllatasiHelyId
AND ocs.C_TANEVID = @tanevId
-- Visszatérési tábla számítása
INSERT INTO @KozepesAlattiTanulok (TanuloId)
SELECT DISTINCT
fht.TanuloId
FROM T_TANULOERTEKELES te
INNER JOIN T_TANTARGY tgy ON tgy.ID = te.C_TANTARGYID AND (tgy.C_FOTARGYE = 'T' OR tgy.C_ALTANTARGYKENTNYOMTATVANYBAN = 'T')
INNER JOIN @Osztalyzatok o ON o.ID = te.C_ERTEKELESOSZTALYZATID
INNER JOIN @FHhozTartozoTanulok fht ON fht.TanuloId = te.C_TANULOID
WHERE
te.C_TIPUSID = IIF(@isFelevi = 0,1520,1519)
AND te.C_TANEVID = @tanevId
GROUP BY fht.TanuloId
HAVING ROUND(AVG(o.Ertek),1) < @FelHelyTipusKozepes
INSERT INTO @TanuloAtlagok (TanuloId, AktualisAtlag, KorabbiAtlag)
SELECT
fht.TanuloId,
(
SELECT ROUND(AVG(o.Ertek),1) FROM T_TANULOERTEKELES te
INNER JOIN @Osztalyzatok o ON o.ID = te.C_ERTEKELESOSZTALYZATID
WHERE te.C_TANULOID = tanulo.ID AND te.C_TIPUSID = IIF(@isFelevi = 0,1520,1519)
),
(
SELECT ROUND(AVG(o.Ertek),1) FROM T_TANULOERTEKELES_OSSZES te
INNER JOIN @Osztalyzatok o ON o.ID = te.C_ERTEKELESOSZTALYZATID
WHERE te.C_TANULOID = extanulo.ID AND te.C_TIPUSID = IIF(@isFelevi = 0,1519,1520) AND te.TOROLT = 'F'
)
FROM
@FHhozTartozoTanulok fht
INNER JOIN T_FELHASZNALO tanulo ON tanulo.ID = fht.TanuloId
INNER JOIN T_FELHASZNALO_OSSZES extanulo ON tanulo.C_OKTATASIAZONOSITO = extanulo.C_OKTATASIAZONOSITO
AND extanulo.C_TANEVID = IIF(@isFelevi = 0,@tanevId,@ElozoTanevId) AND extanulo.TOROLT = 'F'
WHERE (
(@isFelevi = 1 AND tanulo.ID <> extanulo.ID)
OR
(@isFelevi = 0 AND tanulo.ID = extanulo.ID)
)
INSERT INTO @RontottTanulok (TanuloId)
SELECT DISTINCT
fht.TanuloId
FROM @FHhozTartozoTanulok fht
INNER JOIN @TanuloAtlagok ta ON ta.TanuloId = fht.TanuloId
WHERE (ta.AktualisAtlag+1.1) <= ta.KorabbiAtlag
INSERT INTO @retTable (TanuloId, Evfolyam, Neme, TanuloNev, OktatasiAzonosito, TanuloOsztalyNev, IsKozepesMiatt, IsRontasMiatt)
SELECT fht.TanuloId, fht.Evfolyam, fht.Neme, fht.TanuloNev, fht.OktatasiAzonosito, fht.TanuloOsztalyNev, IIF(kozepes.TanuloId IS NULL, 0, 1), IIF(rontott.TanuloId IS NULL, 0, 1)
FROM @FHhozTartozoTanulok 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

View file

@ -0,0 +1,87 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS [dbo].[sp_GetESL_A03T02_1]
GO
CREATE PROCEDURE [dbo].[sp_GetESL_A03T02_1]
@tanevId int,
@intezmenyId int,
@feladatEllatasiHelyId int,
@isFelevi int = 0
AS
BEGIN
SET NOCOUNT ON;
--Táblák deklarálása
DECLARE @TanuloErtekeles TABLE (Id INT, Tanulo INT, Tantargy INT)
DECLARE @FHhozTartozoTanulok TABLE (TanuloId INT, Evfolyam INT, Neme INT)
DECLARE @Targyak TABLE (Tantargy INT)
INSERT INTO @FHhozTartozoTanulok (TanuloId, Evfolyam, Neme)
SELECT tanulok.TanuloId, tanulok.Evfolyam, tanulok.Neme FROM fnGetLemorzsolodottTanulokByFelhely(@feladatEllatasiHelyId, @tanevId, @isFelevi) as tanulok
--Dátumok deklarásása
declare @kezdet int,
@veg int,
@felev int
select top 1 @kezdet= iif(getdate()<=C_DATUM,1394,1400), --első félév
@veg= iif(getdate()<=C_DATUM,1400,1395) --második félév
from t_tanevrendje tr where c_naptipusa=1400 and c_tanevId=@tanevId and c_intezmenyId=@intezmenyId and torolt='F'
DECLARE @FelevKezdete DATE = (select top 1 c_datum from t_tanevrendje tr where c_naptipusa=@kezdet and c_tanevid=@tanevid and c_intezmenyid=@intezmenyid and torolt='F')
DECLARE @FelevVege DATE = (select top 1 c_datum from t_tanevrendje tr where c_naptipusa=@veg and c_tanevid=@tanevid and c_intezmenyid=@intezmenyid and torolt='F')
--csak az egyes félévi jegyek
INSERT INTO @TanuloErtekeles
select te.Id, C_tanuloid, t.c_targykategoria from T_TANULOERTEKELES te
inner join t_tantargy t on t.id=te.c_tantargyid
INNER JOIN @FHhozTartozoTanulok fht on fht.TanuloId=te.C_TANULOID
where te.torolt='F' and te.C_TANEVID=@tanevId and te.C_ERTEKELESOSZTALYZATID=1501 and te.c_tipusid = IIF(@isFelevi = 0,1520,1519)
insert into @Targyak (Tantargy)
select distinct id from T_DICTIONARYITEMBASE where id in (1202,1203,1204,1209,1200,1210,1198,1215,1219,1220,1221,1223,1224,1230,6755,1235,1240,1239,1242,6754)
-- !!!!!!!! --
select TargyNev.C_NAME Id, TargyNev.C_NAME LeirasValue, isnull(piv.[1307],0) 'Evfolyam5', isnull(piv.[1308],0) 'Evfolyam6', isnull(piv.[1309],0) 'Evfolyam7', isnull(piv.[1310],0) 'Evfolyam8',
isnull(piv.[1311],0) 'Evfolyam9', isnull(piv.[1312],0) 'Evfolyam10', isnull(piv.[1313],0) 'Evfolyam11', isnull(piv.[1314],0) 'Evfolyam12',
isnull(piv.[6471],0) 'KH1', isnull(piv.[6474],0) 'KH2', isnull(piv.[6477],0) 'SzH1', isnull(piv.[6478],0) 'SzH2',
isnull(Osszes.OsszesTanulo,0) Osszesen, isnull(OsszesLany.OsszesTanulo,0) Lany
from @Targyak Targyak
left join (
select * from (select distinct Tanulo, Evfolyam, case
when Tantargy in (1202) then 1202 --angol
when Tantargy in (1203) then 1203 --német
when Tantargy in (1204) then 1204 --francia
when Tantargy in (1205,1206,1207,1208,1209) then 1209 --egyéb nyelv
when Tantargy in (1200) then 1200 --nemzetiségi
when Tantargy in (1210) then 1210 --matek
when Tantargy in (1198) then 1198 -- magyar nyelv és irodalom
when Tantargy in (1215) then 1215 --történelem és társadalmi...
when Tantargy in (1219) then 1219 --fizika
when Tantargy in (1220) then 1220 --kémia
when Tantargy in (1221) then 1221 --biológia
when Tantargy in (1223) then 1223 --földrajz
when Tantargy in (1224) then 1224 --ének-zene
when Tantargy in (1229,1230) then 1230 --számítástechika, informatika
when Tantargy in (1232) then 6755 --technika
when Tantargy in (1235) then 1235 --testnevelés
when Tantargy in (6754) then 6754 --történelem
when Tantargy in (1240) then 1240 --szakmai gyakorlat
when Tantargy in (1239) then 1239 --szakmai elmélet
else 1242 --egyéb
end Tantargy
from @TanuloErtekeles te
inner join @FHhozTartozoTanulok fh on fh.TanuloId=te.Tanulo and fh.Evfolyam in (1307,1308,1309,1310, 1311, 1312, 1313, 1314, 6471, 6474, 6477, 6478))a
pivot (count(Tanulo) for Evfolyam in ([1307], [1308], [1309], [1310], [1311], [1312], [1313], [1314], [6471], [6474], [6477], [6478]))piv
) piv on piv.Tantargy=Targyak.Tantargy
left join (select count(distinct Tanulo) OsszesTanulo, Tantargy from @TanuloErtekeles group by Tantargy) Osszes on Osszes.Tantargy=Targyak.Tantargy
left join (select count(distinct Tanulo) OsszesTanulo, Tantargy from (select Tanulo, Tantargy from @TanuloErtekeles te inner join @FHhozTartozoTanulok ft on te.Tanulo=ft.TanuloId and ft.Neme=5) a group by Tantargy) OsszesLany on OsszesLany.Tantargy=Targyak.Tantargy
inner join T_DICTIONARYITEMBASE TargyNev on TargyNev.Id=Targyak.Tantargy
END