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


--2
--select i.indeks, rtrim(d.ime) || ' ' || rtrim(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, rtrim(d.ime) || ' ' || rtrim(d.prezime)
--order by 3;


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

--4
--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
--       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='VI' 
--order by smer, obavezan_predmet;

--5
--create type indeks as integer;

--6
--create table dosije1 (
--		  indeks indeks not null , 
--		  id_smera integer not null , 
--		  status varchar(20) not null , 
--		  ime varchar(50) not null , 
--		  prezime varchar(50) not null ,  
--		  dat_upisa date not null,
--                  primary key (indeks),
--		  foreign key (id_smera) references smer);  


--7

--insert into dosije1
--select indeks, id_smera, status, ime, prezime, dat_upisa
--from dosije;


--8
--select d1.indeks + d2.indeks
--from dosije1 d1, dosije1 d2
--where d1.indeks=20060001 and d2.indeks=20060005;

--select integer(d1.indeks) + integer(d2.indeks)
--from dosije1 d1, dosije1 d2
--where d1.indeks=indeks(20060001) and d2.indeks=indeks(20060005);

--9
--create function godinaupisa(indeks indeks)
--returns integer
--return integer(indeks)/10000;

--10
--create function brojindeksa(indeks indeks)
--returns integer
--return mod(integer(indeks),10000);

--select godinaupisa(indeks), brojindeksa(indeks)
--from dosije1;

--11
--create function max (indeks)
--returns indeks
--source sysibm.max(integer);

--select max(indeks)
--from dosije1;

--12

--create type bodovi as smallint;

--create function obaveznibodovi(smer integer)
--returns bodovi
--return select sum(bodovi)
--       from obavezan_predmet op join predmet p 
--         on p.id_predmeta=op.id_predmeta
--       where op.id_smera=smer;

--create table polozenobodova 
--(
--  indeks integer not null,
--  polozenobodova bodovi,
--  primary key (indeks)
--);

--insert into polozenobodova
--select d.indeks, sum(p.bodovi)
--from dosije d join ispit i2 on d.indeks=i2.indeks
--       join predmet p on p.id_predmeta=i2.id_predmeta
--where not exists ( select *
--                   from obavezan_predmet op
--                   where op.id_smera=d.id_smera
--                         and not exists (select *
--                                         from ispit i
--                                         where i.id_predmeta=op.id_predmeta 
--                                               and d.indeks=i.indeks
--                                               and ocena>5 and status_prijave='o'))
--and ocena>5 and status_prijave='o'
--group by d.indeks; 

--create view studpolobav as (
--select d.indeks, ime, prezime, s.naziv, polozenobodova, obaveznibodovi(s.id_smera) obavezbodovi
--from dosije d join smer s on d.id_smera=s.id_smera
--     join polozenobodova pk on pk.indeks=d.indeks;
--);
