--zbog okidaca postaviti da je @ oznaka za kraj naredbe u skriptu
--za izvrsavanje preko terminala: db2 -td@ -f putanja_do_skripta


--1


--create table predmet_student (
--  idpredmeta integer,
--  studenti smallint
--)@

--insert into predmet_student
--select idpredmeta, 5
--from da.PREDMETPROGRAMA
--where idprograma=103 and vrsta='obavezan'@


--merge into predmet_student ps
--using (select idpredmeta, count(*) n
--       from da.ispit
--       where ocena>5 and status='o'
--       group by idpredmeta) as p
--on ps.idpredmeta=p.idpredmeta
--when matched then
--  update set
--    studenti=n
--when not matched then
--  insert 
--  values (idpredmeta, n)@

--  
-- select *
-- from predmet_student@


--2 
--create table student_podaci (
--  indeks integer,
--  broj_predmeta smallint,
--  prosek float,
--  datupisa date)@

--insert into student_podaci
--select indeks, count(*), avg(ocena+0.0), null
--from da.ispit 
--where ocena>5 and status='o'
--and indeks not in (select indeks
--                  from da.dosije d join da.STUDENTSKISTATUS ss
--                  	on d.idstatusa=ss.id
--                  where naziv='Diplomirao')
--group by indeks
--having avg(ocena+0.0)>8
--union
--select d.indeks, 10, 10.00, null
--from da.dosije d join da.STUDENTSKISTATUS ss
--       on d.idstatusa=ss.id
--where naziv='Diplomirao'@

--merge into student_podaci sp
--using (select d.indeks, naziv status, datupisa, 
--       count(i.idpredmeta) brp, avg(ocena+0.0) prosek
--       from da.dosije d join da.STUDENTSKISTATUS s 
--           on d.idstatusa=s.id
--       left outer join da.ispit i on d.indeks=i.indeks 
--               and ocena>5 and status='o'
--       group by   d.indeks, naziv, datupisa) as p
--on sp.indeks=p.indeks
--when matched and p.status='Diplomirao' then
--  update set
--    sp.datupisa=p.datupisa
--when matched and p.status='Budzet' then
--  update set
--    (sp.broj_predmeta, sp.prosek)=(p.brp, p.prosek)
--when matched and lower(p.status) like '%ispis%' then
-- delete
--when not matched and lower(p.status) not like '%ispis%' then
--  insert (indeks, broj_predmeta, prosek)
--  values (p.indeks, p.brp, p.prosek)
--else ignore@

-- drop table student_podaci@

--3

--create trigger brisanje_studenta
--              before delete
--              on da.dosije
--              referencing old as stari
--              for each row 
--              when(stari.idstatusa in (select id 
--                                       from da.STUDENTSKISTATUS 
--                                       where naziv='Diplomirao'))
--              begin atomic
--                signal sqlstate '75000' ('Student ciji je status Diplomirao ne moze biti obrisan.');
--              end@
--
--
-- unos studenta koji je diplomirao
--insert into da.dosije (indeks, idprograma, ime, prezime, idstatusa, datupisa)
--values (20200349, 103, 'Marko', 'Petrovic', -2, current date)@

--select *
--from da.dosije
--where indeks=20200349@

--pokusaj brisanja studenta koji je diplomirao
--delete from  da.dosije
--where indeks=20200349@

--drop trigger brisanje_studenta@

--4
--create trigger promena_espb before update of espb on da.predmet
--referencing old as staro new as novo
--for each row 
--begin atomic
-- set novo.espb= case 
--                       when staro.espb > novo.espb then staro.espb-1
--                       when staro.espb < novo.espb then staro.espb+1
--                       else staro.espb
--                     end;  
--end@

--unos novog predmeta i azuriranje njegovih bodova 

--insert into da.predmet(id, oznaka, naziv, espb)
--              values(1601, 'pred1', 'predmet 1',   4)@

--
--select *
--from da.predmet
--where id=1601@

--update da.predmet
--set espb=25
--where id=1601@

--select *
--from da.predmet
--where id=1601@

--update da.predmet
--set espb=1
--where id=1601@

--select *
--from da.predmet
--where id=1601@

--update da.predmet
--set espb=10, oznaka='pr1'
--where id=1601@

--select *
--from da.predmet
--where id=1601@

--drop trigger promena_espb@



--5

--drop table broj_predmeta@

--pravljenje tabele
--create table broj_predmeta(broj smallint)@

--unos trenutnog broja redova u tabeli predmet 
--insert into broj_predmeta select count(*) from da.predmet@

--select *  from broj_predmeta@

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

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

--insert into da.predmet (id, oznaka, naziv, espb) 
--                         values(2002, 'predm13', 'predmet 13', 15)@

--select *
--from broj_predmeta@

--delete from da.predmet
--where id=2002@

--select *
--from broj_predmeta@


--drop trigger brisanje_pred@
--drop trigger novi_pred@


