--da bi se izvrsile naredbe i upiti koji se zavrsavaju sa @, skript se poziva sa db2 -td@ -f putanja
--1
--drop trigger unos_smera@
--
--create trigger unos_smera
--              before insert
--              on smer
--              referencing new as novi
--              for each row 
--              when( novi.bodovi != novi.semestara*30)
--              begin atomic
--                signal sqlstate '75000' ('Broj bodova po semestru mora da bude 30.');
--              end@
--              
--              
--insert into smer (id_smera, oznaka, naziv, semestara, bodovi, id_nivoa, zvanje)
--values (500, 'SS', 'Smer', 6, 180, 50, 'Diplomirani S')@
--
--delete from smer where id_smera=500@



--2
--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, broj_semestara, bodovi)
--              values(2500, 'pred1', 'predmet 1',  1, 4)@
--
--
--select *
--from predmet
--where id_predmeta=2500@
--
--update predmet
--set bodovi=25
--where id_predmeta=2500@
--
--select *
--from predmet
--where id_predmeta=2500@
--
--update predmet
--set bodovi=10
--where id_predmeta=2500@
--
--select *
--from predmet
--where id_predmeta=2500@

--drop trigger promena_bodova@

--3
--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, broj_semestara, bodovi) 
--                         values(6000, 'predm13', 'predmet 13', 1, 15)@
--
--select *
--from broj_predmeta@
--
--delete from predmet
--where id_predmeta=6000@

--select *
--from broj_predmeta@



--4

--update upis_godine ug
--set upisano_bodova=(select coalesce(sum(p.bodovi),0)
--                    from upisan_kurs uk join predmet p on p.id_predmeta=uk.id_predmeta
--                    where  uk.indeks=ug.indeks 
--                           and uk.godina=ug.godina),
--   overeno_bodova = (select coalesce(sum(p.bodovi),0)
--                    from ispit i join predmet p on p.id_predmeta=i.id_predmeta
--                    where  i.indeks=ug.indeks 
--                           and i.godina=ug.godina
--                           and ocena>5 and status_prijave='o'),
--    datum_upisa='20.9.2010',
--    datum_overe='25.9.2011'
--where ug.godina=2010 and indeks in ( select indeks
--                                     from dosije d join smer s
--                                         on d.id_smera=s.id_smera
--                                       join nivo_kvalifikacije nk
--                                         on s.id_nivoa=nk.id_nivoa
--                                     where nk.stepen='I');

--5
--create trigger unos_ispita 
--  before insert on ispit
--  referencing new as unos
--  for each row
--  begin atomic
--    set unos.ocena= case when unos.bodovi>90 then 10        
--                         when unos.bodovi>80 then 9    
--                         when unos.bodovi>70 then 8    
--                         when unos.bodovi>60 then 7    
--                         when unos.bodovi>50 then 6    
--                         when unos.bodovi>0 then 5
--                         else null
--                     end;
--  end@

--6
--with prolaznost as (
--select ir.naziv naziv_roka, p.id_predmeta,
--       p.naziv naziv_predmeta, count(i.indeks) brPrijavili,
--       sum(case when status_prijave='o' and ocena> 5 then 1 else 0 end) brPolozili,
--       sum(case when status_prijave='x' and ocena> 5 then 1 else 0 end) brPonistili
--from ispitni_rok ir left outer join ispit i
--       on ir.godina=i.godina_roka and ir.oznaka=i.oznaka_roka
--     left outer join predmet p
--       on p.id_predmeta=i.id_predmeta
--where ir.godina between 2005 and 2009
--group by ir.godina, ir.naziv, p.id_predmeta, p.naziv)
--select naziv_roka, naziv_predmeta, brPrijavili, brPolozili,
--       case when brPrijavili>0 then brPolozili*100.0/brPrijavili else 0 end "Procenat polozenih",
--       brPonistili, 
--       case when brPrijavili>0 then brPonistili*100.0/brPrijavili else 0 end "Procenat ponistenih",
--       case
--         when brPrijavili>0 and (brPolozili+brPonistili)*100.0/brPrijavili > 80 then 'odlicna'
--         when brPrijavili>0 and (brPolozili+brPonistili)*100.0/brPrijavili > 40 then 'srednja'
--         else 'losa'
--       end as rang
--from prolaznost
--order by rang;


