--da bi se izvrsile naredbe i upiti koji se zavrsavaju sa @, skript se poziva sa db2 -td@ -f putanja

--1
--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=s.id_nivoa
--where nk.stepen='VI' and s.naziv='Informatika' and year(dat_upisa)=2007 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')@

--2
--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)@



--3
--with na_smeru as (
--select d.id_smera, count(distinct d.indeks) n, avg(ocena+0.0) ocena
--from dosije d join smer s
--           on d.id_smera = s.id_smera
--         join nivo_kvalifikacije nk
--           on nk.id = s.id_nivoa and nk.stepen = 'VI'
--       left outer join ispit i
--         on d.indeks = i.indeks and status_prijave='o' and ocena>5 and godina = 2006
--where year(dat_upisa) = 2006
--group by d.id_smera ),
--svi as (
--select sum(n) n
--from na_smeru
--)
--select s.oznaka, s.naziv, svi.n ukupno, us.n nasmer, us.n * 100.0 / svi.n proc, ocena
--from smer s join na_smeru us
--           on us.id_smera = s.id_smera, svi
--order by ocena@


--4
--update dosije
--set status='diplomirao'
--where id_smera in ( select id_smera
--                   from smer join nivo_kvalifikacije on id=id_nivoa
--		   where smer.naziv='Informatika' and stepen='VI')
--and 180 <= ( select sum(p.bodovi)
--	          from ispit i join predmet p
--			on i.id_predmeta=p.id_predmeta
--          where indeks = dosije.indeks and ocena > 5 and status_prijave='o')@

--delete from ispit
--where godina=2008 and indeks in ( select indeks
--				         from dosije
--				         where status='mirovanje')@


--5
--create trigger brisanje_studenta
--              before delete
--              on dosije
--              referencing old as stari
--              for each row 
--              when(stari.status <> 'ispisan')
--              begin atomic
--                signal sqlstate '75000' ('Student ciji status nije ispisan ne moze se obrisati.');
--              end@

--insert into dosije (indeks, id_smera, status, ime, prezime, pol, jmbg, dat_upisa)
--values(20090206, 201, 'budzet', 'Marko', 'Markovic','m', '1205989035819', current_date)@

--delete from dosije
--where indeks=20090206@

--update dosije
--set status='ispisan'
--where indeks=20090206@

--6
--create trigger promena_bodova 
--before update of bodovi on predmet
--referencing old as staro new as nova
--for each row 
--begin atomic
-- set nova.bodovi= case 
--                       when staro.bodovi > nova.bodovi then staro.bodovi-1
--                       when staro.bodovi < nova.bodovi then staro.bodovi+1
--                       else staro.bodovi
--                     end;  
--end@

--insert into predmet(id_predmeta, sifra, naziv, semslus, bodovi)
--              values(1601, 'pred1', 'predmet 1',  1, 4)@


--select *
--from predmet
--where id_predmeta=1601@

--update predmet
--set bodovi=25
--where id_predmeta=1601@

--select *
--from predmet
--where id_predmeta=1601@

--update predmet
--set bodovi=10
--where id_predmeta=1601@

--select *
--from predmet
--where id_predmeta=1601@

--drop trigger promena_bodova@

--7
--create table broj_predmeta(broj smallint)@

--insert into broj_predmeta select count(*) from predmet@

--select *
--from broj_predmeta@

--create trigger novi_pred 
--                   after insert 
--                   on predmet
--                   for each row
--                   begin atomic
--                         update broj_predmeta
--                         set broj = broj + 1;
--                         end@

--create trigger brisanje_pred 
--                   after delete 
--                   on predmet
--                   for each row
--                   begin atomic
--                         update broj_predmeta
--                         set broj = broj - 1;
--                         end@

--insert into predmet (id_predmeta, sifra, naziv, semslus, bodovi) 
--                         values(2002, 'predm13', 'predmet 13', 1, 15)@

--select *
--from broj_predmeta@

--delete from predmet
--where id_predmeta=2002@

--select *
--from broj_predmeta@




