wiki:AdvancedReports

Version 10 (modified by 193140, 3 years ago) ( diff )

--

Напредни извештаи од базата (SQL и складирани процедури)

Листа на предмети каде за секој предмет е прикажан најпопуларниот наставник (наставник со најголем број на ученици на кои им предава)

select p.ime as predmet, n.ime as ime_nastavnik, n.prezime as prezime_nastavnik, q3.ucenici as broj_ucenici

from (
                
select * from (

                select broj_ucenici.predmet as predmet, max(broj_ucenici.ucenici) as ucenici 
                from 
                        (
                                select p.id_predmet as predmet, n.id_nastavnik ,count(u.id_ucenik) as ucenici
                                from predmeti p 
                                join predava_predmet pp on p.id_predmet = pp.id_predmet 
                                join nastavnici n on pp.id_nastavnik = n.id_nastavnik 
                                join predava_na pn on n.id_nastavnik = pn.id_nastavnik 
                                join ucenici u on u.id_ucenik =pn.id_ucenik 
                                group by p.id_predmet, n.id_nastavnik 
                        ) 
                        as broj_ucenici 
                        group by broj_ucenici.predmet
                        ) as q1
        
                join (
                                select p.id_predmet as predmet2 ,n.id_nastavnik ,count(u.id_ucenik) as ucenici2
                                from predmeti p 
                                join predava_predmet pp on p.id_predmet = pp.id_predmet 
                                join nastavnici n on pp.id_nastavnik = n.id_nastavnik 
                                join predava_na pn on n.id_nastavnik = pn.id_nastavnik 
                                join ucenici u on u.id_ucenik =pn.id_ucenik 
                                group by p.id_predmet , n.id_nastavnik 
                                ) as q2 
                        on q2.predmet2 = q1.predmet and q2.ucenici2 = q1.ucenici

) as q3
join nastavnici n on n.id_nastavnik = q3.id_nastavnik
join predmeti p on p.id_predmet = q3.predmet

Предмет со најмногу заинтересирани ученици во последните 100 дена

select p.ime as predmet, count(zz.id_ucenik) as broj_na_zainteresirani_ucenici
from predmeti p 
join zainteresiran_za zz 
on zz.id_predmet = p.id_predmet 
join ucenici u 
on u.id_ucenik = zz.id_ucenik 
where zz.datum between current_date - interval '100 days' and current_date
group by p.ime
order by count(zz.id_ucenik) desc 
limit 1;

Број на наставници за секој предмет

select p.ime as predmet, count(pp.id_nastavnik) broj_na_nastavnici
from predmeti p
join predava_predmet pp on pp.id_predmet = p.id_predmet 
group by p.id_predmet 
order by p.ime;

За даден предмет, листа на сите наставници на предметот со број на ученици за секој наставник

select p.ime as predmet, n.ime as nastavnik, count(u.id_ucenik) as br_ucenici
from predmeti p 
join predava_predmet pp on p.id_predmet = pp.id_predmet 
join nastavnici n on pp.id_nastavnik = n.id_nastavnik 
join predava_na pn on n.id_nastavnik = pn.id_nastavnik 
join ucenici u on u.id_ucenik =pn.id_ucenik 
where p.id_predmet = 1
group by p.ime, n.ime
order by br_ucenici desc

Листа на наставници со број на одржани часови

select n.id_nastavnik , n.ime, count(c.id_cas) as max_br_casovi
from nastavnici n 
left join casovi c on c.id_nastavnik = n.id_nastavnik 
group by n.id_nastavnik , n.ime
order by max_br_casovi desc
Note: See TracWiki for help on using the wiki.