--1 --select d.indeks, ime, prezime, naziv, ocena, -- case when i.id_predmeta in (select id_predmeta -- from obavezan_predmet op -- where op.id_smera=d.id_smera) then 'obavezan' -- else 'izborni' -- end predmet --from dosije d join ispit i on d.indeks=i.indeks -- join predmet p on p.id_predmeta=i.id_predmeta --where ocena>5 and status_prijave='o' and ime like 'P%' and month(datum_rodjenja) between 2 and 7; --2 --create index dosije_ime_prezime on dosije (ime desc, prezime desc); --drop index dosije_ime_prezime; --3 --create table predmet_student ( -- id_predmeta integer, -- studenti smallint --); -- -- --insert into predmet_student --select id_predmeta, 5 --from obavezan_predmet --where id_smera=201; -- --merge into predmet_student ps --using (select id_predmeta, count(*) n -- from ispit -- where ocena>5 and status_prijave='o' -- group by id_predmeta) as p --on ps.id_predmeta=p.id_predmeta --when matched then -- update set -- ps.studenti=p.n --when not matched then -- insert -- values (p.id_predmeta, p.n); -- -- select * -- from predmet_student; --4 --create table student_podaci ( -- indeks integer, -- broj_predmeta smallint, -- prosek float, -- dat_rodjenja date); --delete from student_podaci; -- --insert into student_podaci --select indeks, count(*), avg(ocena+0.0), null --from ispit --where ocena>5 and status_prijave='o' --and indeks not in (select indeks -- from status -- where status='diplomirao') --group by indeks --having avg(ocena+0.0)>8 --union --select d.indeks, 10, 10.00, null --from dosije d join status s on d.indeks=s.indeks --where status='diplomirao'; -- -- --merge into student_podaci sp --using (select d.indeks, status, datum_rodjenja, -- count(i.id_predmeta) brp, avg(ocena+0.0) prosek -- from dosije d join status s on d.indeks=s.indeks -- left outer join ispit i on d.indeks=i.indeks -- and ocena>5 and status_prijave='o' -- where datum = (select max(datum) -- from status -- where indeks=d.indeks) -- group by d.indeks, status, datum_rodjenja) as p --on sp.indeks=p.indeks --when matched and p.status='diplomirao' then -- update set -- sp.dat_rodjenja=p.datum_rodjenja --when matched and p.status='ispisan' then -- delete --when matched and p.status='budzet' then -- update set -- (sp.broj_predmeta, sp.prosek)=(p.brp, p.prosek) --when not matched and p.status<>'ispisan' then -- insert (indeks, broj_predmeta, prosek) -- values (p.indeks, p.brp, p.prosek) --else ignore; --5 --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; --6 --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'); --7 --with na_smeru as ( --select s.id_smera, count(distinct d.indeks) n, avg(ocena+0.0) ocena --from smer s -- join nivo_kvalifikacije nk -- on nk.id_nivoa = s.id_nivoa and nk.stepen = 'I' -- -- left outer join dosije d -- on d.id_smera = s.id_smera and year(datum_upisa) = 2006 -- left outer join ispit i -- on d.indeks = i.indeks and status_prijave='o' and ocena>5 and godina = 2006 --group by s.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;