-- 1.Izlistati sadržaj svih tabela. select * from radnik; select * from projekat; select * from radi; select * from kompanija; -- 2. Izlistati različite plate radnika. select distinct plt from radnik; -- 3. Izlistati matični broj, prezime i ime radnika koji imaju platu veću od 25000. select mbr, prezR, imeR from radnik where plt>25000; -- 4. Izlistati matični broj, prezime, ime radnika koji nemaju šefa. select mbr, prezR, imeR from radnik where sef is null; -- 5. Izlistati matični broj, prezime i ime radnika čija je plata između 20000 i 25000. select mbr, prezR, imeR from radnik where plt between 20000 and 25000; -- ili select mbr, prezR, imeR from radnik where plt >= 20000 and plt <= 25000; -- 6. Izlistati matični broj, prezime i ime radnika čije ime počinje na slovo S. select mbr, prezR, imeR from radnik where imeR like 'S%'; -- 7. Izlistati matični broj, prezime i ime radnika čije prezime počinje na slovo M, -- a poslednje slovo prezimena je n. select mbr, prezR, imeR from radnik where prezR like 'P%n'; -- 8. Izlistati sve podatke za prvih 25 radnika. select * from radnik limit 25; -- ili select * from radnik limit 0,25; -- slogovi su numerisani od 0 -- 9. Izlistati oznake 3 projekta počev od trećeg. select idp from projekat limit 2,3; -- 10. Izlistati godišnju platu svakog radnika. select mbr, prezR, imeR, plt*12 as godisnja from radnik; -- 11. Izlistati matične brojeve radnika koji rade na projektima sa oznakom 1, 2 ili 3. select mbr from radi where idp in (1, 2, 3); -- 12. Izlistati matične brojeve radnika koji rade na projektu sa oznakom 1 ili rade 50, 100 ili 200 sati select mbr from radi where brojCas in (50, 100, 200) or idp=1; -- 13. Izlistati matične brojeve radnika koji se ne zovu Alan ili Andrej. select mbr from radnik where imeR not in ('Alan','Andrej'); -- 14. Prikazati radnike koji imaju šefa sortirano po prezimenu. select mbr, prezR, imeR, plt from radnik where sef is not null order by prezR; -- 15. Koliko ima radnika? select count(*) from Radnik; -- 16. Prikazati minimalnu i maksimalnu platu radnika, pri čemu nazivi tih kolona treba da budu -- minimalna i maksimalna. select min(plt) minimalna, max(plt) maksimalna from radnik; -- ili select min(plt) as minimalna, max(plt) as maksimalna from radnik; -- 17. Prikazati prosečnu platu svih radnika zaokruženo na ceo broj, -- pri čemu naziv te kolone treba da je Prosečna plata. select round(avg(plt)) as 'Prosečna plata' from radnik; -- 18. Prikazati prosečnu platu svih radnika zaokruženo na jednu decimalu. select round(avg(plt),1) from radnik; -- 19. Prikazati broj radnika, prosečnu platu i ukupnu godišnju platu svih radnika. select count(*) 'Broj radnika', round(avg(plt),2) 'Prosek plate', round(12*sum(plt),2) 'Godisnja plata svih' from radnik; -- SPAJANJE TABELA -- 20. Prikazati matične brojeve, prezimena i imena radnika, -- oznake i nazive projekata na kojima su angažovani i broj časova angažovanja. select radnik.mbr, radnik.prezR, radnik.imeR, projekat.idp, projekat.nazivP, radi.brojCas from radnik, radi, projekat where radnik.mbr=radi.mbr and projekat.idp=radi.idp; -- ili select radnik.mbr, prezR, imeR, projekat.idp, nazivP, brojCas from radnik, radi, projekat where radnik.mbr=radi.mbr and projekat.idp=radi.idp; -- 21. Prikazati matični broj, prezime, ime, platu i broj časova angažovanja svih -- radnika koji rade na projektu sa oznakom 4. select radnik.mbr, prezR, imeR, plt, brojCas from radnik, radi where radnik.mbr=radi.mbr and radi.idp=4; -- ili select r.mbr, prezR, imeR, plt, rn.brojCas from radnik r, radi rn where r.mbr=rn.mbr and rn.idp=4; -- 22. Prikazati matični broj, prezime, ime, platu i broj casova angažovanja -- svih radnika koji rade na svim projektima osim onog sa oznakom 2. select radnik.mbr, prezR, imeR, plt, brojCas from radnik, radi where radnik.mbr=radi.mbr and radi.idp!=2; -- 23. Prikazati nazive projekata na kojima radi radnik sa datim imenom i -- prezimenom (npr. Philps Alexis). select nazivP from radnik, radi, projekat where radnik.mbr=radi.mbr and radi.idp=projekat.idp and prezR='Philps' and imeR='Alexis'; -- 24. Za svakog radnika prikazati njegov matični broj, prezime, ime i prezime njegovog šefa. select r.mbr, r.prezR, r.imeR, s.prezR as 'Prezime šefa' from radnik r, radnik s where r.sef=s.mbr ; -- GRUPISANJE PODATAKA -- 25. Za sve sefove radnika izlistati jihovo prezime, ime i ukupan broj radnika kojima rukovode. select s.prezR, s.imeR, count(*) from radnik r, radnik s where r.sef=s.mbr group by s.prezR, s.imeR; -- 26. Koliko radnika radi na projektu i koliko je ukupno angažovanje na svakom projektu? select idp, count(mbr), sum(brojCas) from radi group by idp; -- 27. Za svakog radnika koji je šef prikazati matični broj, prezime, ime svakog radnika kao i ukupan broj radnika kojima je on šef. select r.mbr, r.prezR, r.imeR, count(*) from radnik r, radnik s where r.sef=s.mbr group by r.sef; -- 28. Prikazati za svakog radnika matični broj, prezime, ime, ukupan broj projekata i ukupno angažovanje na projektima na kojima radi. select radnik.mbr, radnik.prezR, radnik.imeR, count(*), sum( radi.brojCas) from Radnik, Radi where radnik.mbr=radi.mbr group by radnik.mbr; -- 29. Za one radnike koji rade na više projekata izlistati matični broj i ukupan broj projekata na -- kojima rade . select mbr, count(idp) from radi group by mbr having count(idp)>1; -- 30. Izlistati naziv projekata i ukupan broj sati angažovanja na projektima na kojima je ukupno angažovanje veće od 150 časova. select nazivP, sum(brojCas) from projekat, radi where projekat.idp=radi.idp group by projekat.idp having sum(brojCas)>150; -- neki projekti imaju ista imena ali se razlikuju sifre select idp, nazivP from projekat where nazivP='Brassicaceae'; -- UGNJEŽDENI UPITI -- 31. Izlistati matični broj, prezime, ime i platu radnika koji imaju platu veću od prosečne, -- u opadajućem redosledu plate. select mbr, prezR, imeR, plt from radnik where plt>(select avg(plt) from radnik) order by plt desc; -- 32. Izlistati nazive i oznake projekata na kojima je prosečno angažovanje veće od prosečnog angažovanja na svim projektima. select projekat.nazivP, projekat.idp from projekat, radi where projekat.idp= radi.idp group by projekat.idp having avg(brojCas)>(select avg(brojCas) from radi); -- 33. Prikazati prezimena, imena i platu radnika koji nisu angažovani ni na jednom projektu. select prezR, imeR, plt from radnik where mbr not in (select distinct mbr from radi); -- 34. Izlistati nazive projekata na kojima radi bar jedan radnik koji radi i na projektu sa ozn. 2. select projekat.nazivP from projekat where idp in (select idp from radi where mbr in (select mbr from radi where idp=2)); -- 35. Izlistati prezimena i imena radnika koji rade na projektu sa oznakom 1 (koristeći ugnježdeni upit). select prezR, imeR from radnik where mbr in (select mbr from radi where idp=1); -- ZAVISNI UGNJEŽDENI UPIT -- 36. Izlistati matični broj, prezime, ime, platu, broj sati angažovanja radnika -- čiji je broj sati angažovanja na nekom projektu veći od prosečnog broja sati -- angažovanja na tom projektu. select distinct r.mbr, prezR, imeR, plt, brojCas from radnik r, radi rn1 where r.mbr=rn1.mbr and rn1.brojCas>(select avg(brojCas) from radi rn2 where rn2.idP=rn1.idP); -- Ažuriranje baze podataka -- 37. Ubaciti jedan slog u tabelu radnik. insert into radnik (mbr, prezR, imeR, plt, sef) values (1001, 'Mihajlovic', 'Zorana', 250000, 1); -- ili insert into Radnik values (1001, 'Mihajlovic', 'Zorana', 250000, 1); -- 38. Ubaciti dva sloga u tabelu projekat. insert into projekat values (404, 'Projekat4'); insert into projekat values (505, 'Projekat5'); -- 39. Promeniti naziv projekta sa oznakom 505 u naziv Novi projekat. update projekat set nazivP='Novi projekat' where idP=505; -- 40. Izbrisati radnika sa matičnim brojem 1001. delete from radnik where mbr=1001;