--1
--create index student_prosek on student_ispiti
--(indeks, prosek);

--2
--create view ispitnirok_predmeti (ispitni_rok, predmet, broj_ispita) as 
--select ir.naziv, p.naziv, count(*) 
--from ispitni_rok ir join ispit i on ir.godina_roka=i.godina_roka and ir.oznaka_roka=i.oznaka_roka
--                    join predmet p on p.id_predmeta=i.id_predmeta
--group by ir.naziv, p.naziv;

--select *
--from ispitnirok_predmeti;

--3
--select ime, count(*) n
--from dosije
--where pol='m'
--group by ime
--order by n desc;

--4
--select i.indeks, trim(d.ime) || ' ' || trim(d.prezime),  sum(p.bodovi) polozeno
--from dosije d 
--     join ispit i
--       on d.indeks=i.indeks
--   join predmet p
--       on i.id_predmeta=p.id_predmeta
--where i.status_prijave='o' and i.ocena>5
--group by i.indeks, ime, prezime
--order by 3;

--5
--select indeks, max(coalesce(datum_usmenog, datum_pismenog)) poslednji
--from ispit
--where ocena > 5 and status_prijave='o'
--group by indeks;


--6
--select s.naziv smer, p1.naziv obavezan_predmet, p2.naziv uslovni_predmet
--from nivo_kvalifikacije nk join smer s on s.id_nivoa=nk.id_nivoa
--       join  obavezan_predmet op on op.id_smera=s.id_smera
--       join predmet p1 on p1.id_predmeta=op.id_predmeta
--       left outer join uslovni_predmet up on up.id_predmeta=op.id_predmeta
--       left outer join predmet p2 on p2.id_predmeta=up.id_uslovnog
--where nk.stepen='I' 
--order by smer, obavezan_predmet;


--7

--I nacin

--with indeksbodova as (select indeks, sum(p.bodovi) polbodovi
--from ispit i join predmet p on i.id_predmeta=p.id_predmeta
--where ocena > 5 and status_prijave='o'
--group by indeks),
--maxsmer as (select id_smera, max(polbodovi) maxb
--from dosije d join indeksbodova on d.indeks=indeksbodova.indeks
--group by id_smera)
--
--select  s.naziv, d.indeks, ime, prezime, polbodovi
--from dosije d join indeksbodova on d.indeks=indeksbodova.indeks
--     join maxsmer on maxsmer.id_smera=d.id_smera join smer s on maxsmer.id_smera=s.id_smera
--where polbodovi = maxb;

--II nacin

--with indeksbodova as (select id_smera, d.indeks, ime, prezime, sum(p.bodovi) polbodovi
--from dosije d join ispit i on d.indeks=i.indeks
--     join predmet p on i.id_predmeta=p.id_predmeta
--where ocena > 5 and status_prijave='o'
--group by id_smera, d.indeks, ime, prezime)
--
--select  s.naziv, indeks, ime, prezime, polbodovi
--from indeksbodova ib join smer s on ib.id_smera=s.id_smera
--where polbodovi = (select max(polbodovi)
--                   from indeksbodova ib2
--                   where ib2.id_smera=ib.id_smera);

--8
--select d.indeks, d.ime, d.prezime, p.naziv
--from dosije d join obavezan_predmet op on d.id_smera=op.id_smera
--     join predmet p on p.id_predmeta=op.id_predmeta
--     join smer s on s.id_smera=d.id_smera
--     join nivo_kvalifikacije nk on nk.id_nivoa=s.id_nivoa
--where nk.stepen='I' and s.naziv='Informatika' and year(datum_upisa)=2009 and not exists (select *
--                                                                                from ispit i
--                                                                                where i.indeks= d.indeks and
--                                                                                      i.id_predmeta=op.id_predmeta and
--                                                                                      ocena>5 and status_prijave='o');

