SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[sp_ESLAdatgyujtes]
  @tanevId int,
  @intezmenyId int

AS
BEGIN
  SET NOCOUNT ON;

--Tanulók száma
select count(distinct tcs.c_tanuloid) as TanulokSzama from t_tanulocsoport tcs 
where tcs.torolt='F' and tcs.c_intezmenyid=@intezmenyid and tcs.c_tanevid=@tanevid

--Tanév kezdete óta távozott tanulók száma
declare @tanevkezdet date=(select c_datum from t_tanevrendje tr where c_naptipusa=1394 and c_tanevid=@tanevid and c_intezmenyid=@intezmenyid and torolt='F')
select count(distinct tcs.c_tanuloid) TanevKezdeteOtaTavozottTanulokSzama from t_tanulocsoport tcs 
	inner join t_osztaly o on o.id=tcs.c_osztalycsoportid and o.torolt='F'
where tcs.c_kilepesdatum >=@tanevkezdet and tcs.torolt='F' and tcs.c_intezmenyid=@intezmenyid and tcs.c_tanevid=@tanevid

--Tantárgyi átlag miatt veszélyeztetett tanulók száma
select count(distinct Tanulo) TantargyiAtlagMiattVeszelyeztetettTanulokSzama from 
	(select te.c_tanuloid Tanulo, te.c_tantargyid Tantargy, avg(convert(float, d.c_value)) as Atlag from t_tanuloertekeles te
		inner join (select distinct d.id, d.c_value from t_dictionaryitembase d) d on d.id=te.c_osztalyzat
	 where te.torolt='F' and te.c_ertekelestipusa=1518 and te.c_intezmenyid=@intezmenyid and te.c_tanevid=@tanevid
	 group by te.c_tanuloid, te.c_tantargyid) atlag
where atlag.Atlag<3

--Félévi jegyek miatt veszélyeztetett tanulók száma
declare @feleviVeszelyeztetett table (Tanulo int, Tantargy int)
insert into @feleviVeszelyeztetett
select distinct te.c_tanuloid as Tanulo, te.c_tantargyid as Tantargy  
from t_tanuloertekeles te
	inner join (select distinct d.id, d.c_value, d.c_name from t_dictionaryitembase d) d on d.id=te.c_osztalyzat
where te.c_ertekelestipusa=1519 and d.c_value=1 and te.torolt='F' and te.c_intezmenyid=@intezmenyid and te.c_tanevid=@tanevid

select count(Tanulo) FeleviJegyekMiattVeszelyeztetettTanulokSzama, Tantargy from 
	(SELECT distinct Tanulo, STUFF((SELECT ', ' + CAST(t.c_nev AS VARCHAR(10)) [text()]
         FROM @feleviVeszelyeztetett 
		 inner join t_tantargy t on t.id=Tantargy
         FOR XML PATH(''), TYPE)
        .value('.','NVARCHAR(MAX)'),1,2,' ') Tantargy
FROM @feleviVeszelyeztetett fv
GROUP BY Tanulo) felevi
group by Tantargy

--Év végi jegyek miatt veszélyeztetett tanulók száma 
declare @evvegiVeszelyeztetett table (Tanulo int, Tantargy int)
insert into @evvegiVeszelyeztetett
select distinct te.c_tanuloid as Tanulo, te.c_tantargyid as Tantargy  
from t_tanuloertekeles te
	inner join (select d.id, d.c_value, d.c_name from t_dictionaryitembase d) d on d.id=te.c_osztalyzat
where te.c_ertekelestipusa=1520 and d.c_value=1 and te.torolt='F' and te.c_intezmenyid=@intezmenyid and te.c_tanevid=@tanevid

select count(Tanulo) EvVegiJegyekMiattVeszelyeztetettTanulokSzama, Tantargy from (SELECT distinct Tanulo, STUFF((SELECT ', ' + CAST(t.c_nev AS VARCHAR(10)) [text()]
         FROM @evvegiVeszelyeztetett 
		 inner join t_tantargy t on t.id=Tantargy
         FOR XML PATH(''), TYPE)
        .value('.','NVARCHAR(MAX)'),1,2,' ') Tantargy
FROM @evvegiVeszelyeztetett ev
GROUP BY Tanulo) evvegi
group by Tantargy

--Év végi romlás miatt veszélyeztetett tanulók száma
declare @feleviatlag table (Tanulo int, Atlag float)
insert into @feleviatlag
select te.c_tanuloid as Tanulo, avg(convert(float, d.c_value)) Atlag from t_tanuloertekeles te
	inner join (select distinct d.id, d.c_value, d.c_name from t_dictionaryitembase d) d on d.id=te.c_osztalyzat
where te.c_ertekelestipusa=1519 and te.torolt='F' and te.c_intezmenyid=@intezmenyid and te.c_tanevid=@tanevid
group by te.c_tanuloid

declare @evvegiatlag table (Tanulo int, Atlag float)
insert into @evvegiatlag
select te.c_tanuloid as Tanulo, avg(convert(float, d.c_value)) Atlag from t_tanuloertekeles te
	inner join (select distinct d.id, d.c_value, d.c_name from t_dictionaryitembase d) d on d.id=te.c_osztalyzat
where te.c_ertekelestipusa=1520 and te.torolt='F' and te.c_intezmenyid=@intezmenyid and te.c_tanevid=@tanevid
group by te.c_tanuloid

select count(f.Tanulo) EvVegiRomlasMiattVeszelyeztetettTanulokSzama from @feleviatlag f
	inner join @evvegiatlag e on f.Tanulo=e.Tanulo
where f.atlag-e.atlag>1.1

--Mulasztások miatt veszélyeztetett tanulók száma
select Tanulo as MulasztasokMiattVeszelyeztetettTanulokSzama from 
(select tm.c_oratanuloiid Tanulo, count(tm.id) Mulasztas from t_tanulomulasztas tm
	where tm.torolt='F' and tm.c_intezmenyid=@intezmenyid and tm.c_tanevid=@tanevid
	group by tm.c_oratanuloiid)mul
where Mulasztas>=100

--Tantárgyi mulasztások miatt veszélyeztetett tanulók száma 
declare @tanmulvesz table(Tanulo int, Foglalkozas int, Szamlalo float)
insert into @tanmulvesz
select tm.c_oratanuloiid as Tanulo, fog.id as Foglalkozas, count(tm.id)*fog.c_oraszam as Szamlalo from t_tanulomulasztas tm
	inner join t_tanitasiora tao on tao.id=tm.c_tanitasiorakid and tao.torolt='F' and tao.c_intezmenyid=@intezmenyid and tao.c_tanevid=@tanevid
	inner join t_foglalkozas fog on fog.id=tao.c_foglalkozasid and fog.c_intezmenyid=@intezmenyid and fog.c_tanevid=@tanevid
	inner join t_tanulo t on t.id=tm.c_oratanuloiid and t.c_magantanulo='F'
where tm.torolt='F' and tm.c_intezmenyid=@intezmenyid and tm.c_tanevid=@tanevid
group by tm.c_oratanuloiid, fog.id, fog.c_oraszam

select count(distinct Tanulo) TantargyiMulasztasokMiattVeszelyeztetettTanulokSzama from 
	(select tmv.Tanulo, tmv.foglalkozas, Szamlalo Oraszam from @tanmulvesz tmv
	inner join t_foglalkozas fog on fog.id=tmv.Foglalkozas and fog.torolt='F')tmVeszelyeztetett
where Oraszam>0.3*36*Oraszam

--Tantárgyi mulasztások miatt előreláthatóan veszélyeztetett tanulók száma
declare @foglalkozasok table (Id int, AktOraszam float, OsszOraszam float)
insert into @foglalkozasok
select tao.c_foglalkozasid Foglalkozas, sum(fog.c_oraszam) AktOraszam, fog.c_oraszam*36 from t_tanulomulasztas tm
	inner join t_tanitasiora tao on tao.id=tm.c_tanitasiorakid and tao.torolt='F' and tao.c_intezmenyid=@intezmenyid and tao.c_tanevid=@tanevid
	inner join t_foglalkozas fog on fog.id=tao.c_foglalkozasid and fog.torolt='F' and fog.c_intezmenyid=@intezmenyid and fog.c_tanevid=@tanevid
where tm.torolt='F' and tm.c_intezmenyid=@intezmenyid and tm.c_tanevid=@tanevid
group by tao.c_foglalkozasid, fog.c_oraszam

select count(tmv.Tanulo) TantargyiMulasztasokMiattElorelathatoanVeszelyeztetettTanulokSzama from @tanmulvesz tmv
	inner join @foglalkozasok fog on fog.Id=tmv.Foglalkozas
where tmv.Szamlalo>fog.AktOraszam*0.3

--Igazolatlan mulasztások miatt veszélyeztetett tanulók száma
select count(Tanulo) IgazolatlanMulasztasokMiattVeszelyeztetettTanulokSzama from 
	(select tm.c_oratanuloiid Tanulo, count(tm.id) Igazolatlan from t_tanulomulasztas tm
		inner join t_tanulo t on tm.c_oratanuloiid=t.id and t.c_magantanulo='F'
	where tm.torolt='F' and tm.c_igazolt='F' and tm.c_intezmenyid=@intezmenyid and tm.c_tanevid=@tanevid
	group by tm.c_oratanuloiid) igazolatlan
where Igazolatlan>50

--Igazolatlan mulasztások miatt előreláthatóan veszélyeztetett tanulók száma
declare @hanyados float=(select convert(float, count(nn.id))/181 from t_naptarinap nn
where nn.c_napdatuma<getdate() and nn.c_orarendinap='T' and nn.torolt='F' and nn.c_intezmenyid=@intezmenyid and nn.c_tanevid=@tanevid)  

select Tanulo IgazolatlanMulasztasokMiattElorelathatoanVeszelyeztetettTanulokSzama from
(select tm.c_oratanuloiid Tanulo, sum(fog.c_oraszam)/@hanyados Osszes from t_tanulomulasztas tm
		inner join t_tanulo t on tm.c_oratanuloiid=t.id and t.c_magantanulo='F'
		inner join t_tanitasiora tao on tao.id=tm.c_tanitasiorakid and tao.c_intezmenyid=@intezmenyid and tao.c_tanevid=@tanevid and tao.torolt='F'
		inner join t_foglalkozas fog on fog.id=tao.c_foglalkozasid and fog.c_intezmenyid=@intezmenyid and fog.c_tanevid=@tanevid and fog.torolt='F'
where tm.torolt='F' and tm.c_igazolt='F'  and tm.c_intezmenyid=@intezmenyid and tm.c_tanevid=@tanevid
group by tm.c_oratanuloiid) Osszes
where Osszes.Osszes>50

--Alacsony magatartásértékelésű tanulók száma
select count(distinct te.c_tanuloid) AlacsonyMagatartasertekelesuTanulokSzama from t_osztalyfonokiertekeles oe
	inner join t_tanuloertekeles te on te.id=oe.id and te.c_intezmenyid=@intezmenyid and te.c_tanevid=@tanevid and te.torolt='F'
where oe.c_magatartas=1558

--Alacsony szorgalomértékelésű tanulók száma
select count(distinct te.c_tanuloid) AlacsonySzorgalomertekelesuTanulokSzama from t_osztalyfonokiertekeles oe
	inner join t_tanuloertekeles te on te.id=oe.id and te.torolt='F' and te.c_intezmenyid=@intezmenyid and te.c_tanevid=@tanevid
where oe.c_szorgalom=1558 and oe.torolt='F'

--TANULÓK
declare @tanulok table(Id int, Evismetlo nvarchar(1), MaganTanulo nvarchar(1), MaganTanulosagKezdete date, MenedekJoggalRendelkezo nvarchar(1), JogVSzunetelteto nvarchar(1), Allamigondozott nvarchar(1), 
					Veszelyeztetett nvarchar(1), SajatosNevelesu nvarchar(1), BeilleszkedesiProblema nvarchar(1), MagatartasProblema nvarchar(1), TanulasiProblema nvarchar(1), HalmozottanFogyatekos nvarchar(1), RendszeresGyVK nvarchar(max),
					MaganTanulosagOka int, HatranyosH int )
insert into @tanulok
select t.id as Id, t.c_evismetlo, t.c_magantanulo, t.c_magantanulosagkezdete, t.c_menedekjoggalrendelkezo,
t.c_jogviszonyatszunetelteto, t.c_allamigondozott, t.c_veszelyeztetett, t.c_sajatosnevelesu,
t.c_beilleszkedesiproblemavalkuz, t.c_magatartasiproblemavalkuzd, t.c_tanulasiproblemavalkuzd,
c_halmozottanfogyatekos, t.c_rendszeresgyermekvedelmikedv, t.c_magantanulosaganakoka, c_hatranyoshelyzetu
 from t_tanulo t where t.torolt='F' and t.c_alintezmenyid=@intezmenyid

--Évismétlő tanulók száma !!!
select count(Id) EvismetloTanulokSzama from @tanulok where Evismetlo='T'

--Magántanulók száma
select count(Id) MagantanulokSzama from @tanulok where MaganTanulo='T'

--Magántanulóvá vált tanulók száma
declare @tanevKezdete date=(select distinct c_datum from t_tanevrendje tr where tr.c_naptipusa=1394)
select count(Id) MagantanulovaValtTanulokSzama from @tanulok t where MaganTanulo='T' and MaganTanulosagKezdete>@tanevKezdete

--Magántanulóvá vált tanulók száma saját döntés alapján
select count(Id) MagantanulovaValtTanulokSzamaSajatDontesAlapjan from @tanulok t where MaganTanulo='T' and MaganTanulosagKezdete>@tanevKezdete and MaganTanulosagOka in (658,663,664)

--Menedékjoggal rendelkező tanulók száma
select count(Id) MenedekjoggalRendelkezoTanulokSzama  from @tanulok t where  MenedekJoggalRendelkezo='T'

--Jogviszonyt szüneteltető tanulók száma
select count(Id) JogviszonytSzuneteltetoTanulokSzama from @tanulok t where JogVSzunetelteto='T'

--Intézeti, állami nevelt tanulók száma
select count(Id) IntezetiAllamiNeveltTanulokSzama from @tanulok t where AllamiGondozott='T'

--Veszélyeztetett tanulók száma
select count(Id) VeszelyeztetettTanulokSzama  from @tanulok t where Veszelyeztetett='T'

--Sajátos nevelési igényű (SNI) tanulók száma
select count(Id) SajatosNevelesiIgenyuSniTanulokSzama  from @tanulok t where SajatosNevelesu='T' 

--Beilleszkedési nehézségekkel rendelkező tanulók száma
select count(Id) BeilleszkedesiNehezsegekkelRendelkezoTanulokSzama  from @tanulok t where BeilleszkedesiProblema='T' 

--Magatartási problémával küzdő tanulók száma
select count(Id) MagatartasiProblemavalKuzdoTanulokSzama  from @tanulok t where MagatartasProblema='T'

--Tanulási problémával küzdő tanulók száma
select count(Id) TanulasiProblemavalKuzdoTanulokSzama  from @tanulok t where TanulasiProblema='T'

--Hátrányos helyzetű tanulók száma
select count(Id) HatranyosHelyzetuTanulokSzama  from @tanulok t where HatranyosH=1122 

--Halmozottan hátrányos helyzetű tanulók száma
select count(Id) HalmozottanHatranyosHelyzetuTanulokSzama  from @tanulok t where HalmozottanFogyatekos='T' 

--Rendszeres gyermekvédelmi kedvezményben részesülő tanulók száma
select count(Id) RendszeresGyermekvedelmiKedvezmenybenReszesuloTanulokSzama from @tanulok t where RendszeresGyVK is not null

--Alapfokú oktatásban résztvevő, tizenhatodik életévét betöltött tanulók száma
select count(distinct tcs.c_tanuloid) AlapfokuOktatasbanResztvevoTizenhatodikEletevetBetoltottTanulokSzama from t_tanulocsoport tcs
	inner join t_osztalycsoport ocs on tcs.c_osztalycsoportid=ocs.id 
	inner join t_osztaly o on o.id=ocs.id
	inner join t_feladatellatasihely fh on fh.id=ocs.c_feladatellatasihelyid and fh.c_oktatasinevelesifeladattipus=1158
	inner join (select t.id Id, DATEDIFF(yy, f.c_szuletesidatum, @tanevKezdete) Eletkor from t_tanulo t 
				inner join t_felhasznalo f on f.id=t.id) tanulo on tanulo.Id=tcs.c_tanuloid
where tanulo.Eletkor>=16 and tcs.torolt='F' and tcs.c_intezmenyid=@intezmenyid and tcs.c_tanevid=@tanevid
	
--A középfokú oktatásba tizenhatodik életévük betöltését követően belépett tanulók száma
select count(distinct tcs.c_tanuloid) AKozepfokuOktatasbaTizenhatodikEletevukBetoltesetKovetoenBelepettTanulokSzama from t_tanulocsoport tcs
	inner join t_osztalycsoport ocs on tcs.c_osztalycsoportid=ocs.id
	inner join t_osztaly o on o.id=ocs.id
	inner join t_feladatellatasihely fh on fh.id=ocs.c_feladatellatasihelyid and fh.c_oktatasinevelesifeladattipus=1158
	inner join (select t.id Id, DATEDIFF(yy, f.c_szuletesidatum, @tanevKezdete) Eletkor from t_tanulo t 
				inner join t_felhasznalo f on f.id=t.id) tanulo on tanulo.Id=tcs.c_tanuloid
where tanulo.Eletkor>=16 and tcs.torolt='F' and tcs.c_intezmenyid=@intezmenyid and tcs.c_tanevid=@tanevid

End

go