--1
--select d.indeks, ime, prezime, count(distinct i.id_predmeta) br_polagao, 
--                               sum(case when ocena>5 then 1 else 0 end) br_polozio, 
--                               avg(case when ocena>5 then ocena*1.0 else null end) prosek
--from dosije d join ispit i on d.indeks=i.indeks  join predmet p on i.id_predmeta=p.id_predmeta
--where ime like 'A%' or ime like '%a%' or ime like 'O%' or ime like '%o%'
--group by d.indeks, ime, prezime
--having sum(case when ocena>5 then bodovi else 0 end ) between 15 and 25
--order by d.indeks;

--2
--select naziv, case 
--                when bodovi>7 then 'I kat'
--                when bodovi>4 then 'II kat'
--                else  'III  kat' 
--              end as kategorija
--from predmet;


--3
--select kategorija, count(*)
--from (select naziv, case 
--                      when bodovi>7 then 'I kat'
--                      when bodovi>4 then 'II kat'
--                      else  'III  kat' 
--                    end as kategorija
--      from predmet) as a
--group by kategorija;

--ili

--with predmet_kategorija (predmet, kategorija) as ( 
--select naziv, case 
--                when bodovi>7 then 'I kat'
--                when bodovi>4 then 'II kat'
--                else  'III  kat' 
--              end as kategorija
--from predmet)
--select kategorija, count(*)
--from predmet_kategorija
--group by kategorija;

--4
--with student_bodovi as ( 
--select indeks, sum(bodovi) pol_bodovi
--from  ispit i join predmet p on i.id_predmeta=p.id_predmeta
--where ocena>5
--group by indeks)
--select count(*) br_studenata
--from student_bodovi
--where pol_bodovi>10;

--5
--with student_ocene as (
--select indeks, ocena br8, cast(null as smallint)  br9
--from ispit
--where ocena=8
--union all
--select indeks,  cast(null as smallint) br8, ocena br9
--from ispit
--where ocena=9)
--select indeks, count(br8) broj_8, count(br9) broj_9
--from student_ocene
--group by indeks;

--ili

--with student_8 as (
--select indeks, count(*) br8
--from ispit
--where ocena=8
--group by indeks
--),
--student_9 as (
--select indeks, count(*) br9
--from ispit
--where ocena=9
--group by indeks
--)
--select coalesce(s1.indeks, s2.indeks), coalesce(br8,0) broj_8, coalesce(br9, 0) broj_9
--from  student_8 s1 full outer join student_9 s2 on s1.indeks=s2.indeks;

--ili

--select indeks, sum(case when ocena=8 then 1 else 0 end) broj_8, sum(case when ocena=9 then 1 else 0 end) broj_9
--from ispit
--group by indeks
--having sum(case when ocena=8 then 1 else 0 end)>0 or sum(case when ocena=9 then 1 else 0 end)>0;

--ili

--select indeks, sum(case when ocena=8 then 1 else 0 end) broj_8, sum(case when ocena=9 then 1 else 0 end) broj_9
--from ispit
--where ocena=8 or ocena=9
--group by indeks;

--6
--insert into dosije (indeks, ime, prezime, god_rodjenja, mesto_rodjenja)
--values (20100028, 'Marko', 'Markovic', 1990, 'Kragujevac');

--7
--insert into predmet
--values (2005, 'P112', 'Uvod u arhitekturu racunara', 6),
--       (2006, 'P116', 'Razvoj softvera', 6);

--8
--insert into ispit (indeks, id_predmeta, godina_roka, oznaka_roka, ocena)
--select indeks, id_predmeta, 2011, 'jun', 9
--from dosije, predmet
--where god_rodjenja=1991 and naziv='Programiranje 2';

--9
--delete from dosije
--where god_rodjenja=1990;

--10
--delete from ispit 
--where id_predmeta  in ( select id_predmeta
--                        from predmet
--                        where naziv='Programiranje 2' or bodovi=15);

--11
--update predmet
--set bodovi=bodovi*1.2    
--where sifra like 'P%';

--12
--update ispit
--set (oznaka_roka, datum_ispita)=('jun', null)
--where id_predmeta in (select id_predmeta
--                                     from predmet
--                                     where naziv='Analiza 1') and godina_roka=2011 and oznaka_roka='jan';

--13
--update predmet
--set bodovi=(select max(bodovi)
--                   from predmet)
--where exists ( select *
--                       from ispit i join dosije d on i.indeks=d.indeks
--                      where mesto_rodjenja='Beograd' and i.id_predmeta=predmet.id_predmeta);  

