Untitled - MARKUP 1.55 KB
                                
                                    /*
podaj dane 3 uczniow (id nazwisko imie klasa) z kazdej klasy wytypowanych do nagrody dyrektora ktozy spelniaja nastepujace warunki
-srednia min 3.7 jako srednia dokladnosc do 2 miejsc po przecinku z srednich ocen z poszczegulnych przedmiotow zaokraglane do liczb calkowitych
-maja nie wiecej niz 1 uwage krytyczna
-maja nie wiecej niz 7 nieobecnosci
*/
with sred1 as (
select
u.IdUcznia
,o.IdPrzedmiotu
,CONVERT(DECIMAL(7,0), round (AVG(o.Ocena),0) ) AS sred
from Uczniowie u join Oceny o on u.IdUcznia=o.IdUcznia
group by u.IdUcznia,o.IdPrzedmiotu
), sredk as(
select
s.IdUcznia
,CONVERT(DECIMAL(7,2), round (AVG(s.sred),2) ) AS sred
from sred1 as s
group by s.IdUcznia
having round(AVG(s.sred),2)>=3.7
), laureaci as (
select
u.IdUcznia
,u.Imie
,u.Nazwisko
,k.Nazwa
,RANK() over(partition by k.nazwa order by s.sred desc) ranking
,s.sred
from Uczniowie as u join Klasy as k on u.IdKlasy=k.IdKlasy join sredk as s on u.IdUcznia=s.IdUcznia
where u.IdUcznia in (
 select
 U.IdUcznia
 --,count(n.DataNieobecnosci) nieob
 from Uczniowie u left join Nieobecnosci as n on u.IdUcznia=n.IdUcznia
 group by u.IdUcznia
 having count(n.DataNieobecnosci)<=7
)and u.IdUcznia not in (
select
uw.IdUcznia
--,COUNT(uw.IdUcznia) kryt
from Uwagi as uw  join RodzajeUwag as ru on uw.IdRodzajuUwagi=ru.IdRodzajuUwagi
and ru.CzyKrytyczna=1
group by uw.IdUcznia
having COUNT(uw.IdRodzajuUwagi)>=2
)

)
select 
l.IdUcznia
,l.Imie
,l.Nazwisko
,l.Nazwa
,l.sred
from laureaci as l
where ranking in (1,2,3)
                                
                            

Paste Hosted With By Wklejamy.pl