SQL All You Need For Nothing
SQL All You Need For Nothing
ZADACI I REENJA
SQL
-zadaci i reenjaPLT
IME*
SRM
MBR
PRZ*
NAZ
Ima_sefa
(0,1)
GOD
RADNO
MESTO
(0,N)
raspor
edjen
sef
SODEL
NAZOD
LOK
(0,N)
(0,1)
RADNIK
(0,N)
Je_sef
(0,1)
radi
(0,N)
ODELJENJE
(0,N)
rukovodi
radproj
(0,N)
(0,1)
PROJEKAT
SPR
NAP*
NAR*
Opis
matini br.radnika
ime radnika
prezime radnika
mbr efa
plata
ifra projekta
mbr rukovodioca projekta
naruilac projekta
naziv projekta
br. radnih asova na projektu
Marija Raki-Skokovi
Mnem.
SODEL
NAZOD
LOK
SRM
NAZ
GOD
SPLR
DGR
GGR
Opis
ifra odeljenja
naziv odeljenja
lokacija odeljenja
ifra radnog mesta
naziv radnog mesta
godina roenja radnika
ifra platnog razreda
donja granica platnog razreda
gornja granica platnog razreda
ZADACI I REENJA
WHERE uslov u SELECT naredbi. Operatori poreenja: =, != (<>), <, >, <=, >=; IN
(lista); BETWEEN .. AND..; LIKE; NOT LIKE; IS NULL; IS NOT NULL
4. Izlistati imena i prezimena radnika koji se zovu Petar.
SELECT ime, prz
FROM radnik
WHERE ime='Petar';
5. Izlistati imena, prezimena i plate radnika ija je plata vea od 10000.
SELECT ime, prz, plt
FROM radnik
WHERE plt>10000;
6. Izlistati imena, prezimena i plate radnika koji imaju platu izmeu 10000 i 20000.
SELECT ime, prz, plt
FROM radnik
WHERE plt BETWEEN 10000 AND 20000;
Ili
SELECT ime, prz, plt
FROM radnik
WHERE plt>=10000 AND plt<=20000;
Marija Raki-Skokovi
ZADACI I REENJA
7. Izlistati imena, prezimena i plate radnika koji imaju platu koja nije izmeu 10000 i 20000.
SELECT ime, prz, plt
FROM radnik
WHERE plt NOT BETWEEN 10000 AND 20000;
8. Izlistati imena, prezimena i matine brojeve radnika koji se zovu Petar, Marko ili Ana.
SELECT ime, prz, mbr
FROM radnik
WHERE ime IN ('Petar','Marko','Ana');
9. Izlistati imena, prezimena i plate radnika koji imaju platu izmeu 15000 i 20000 ili se zovu
Marko.
SELECT ime, prz, plt
FROM radnik
WHERE plt>=15000 AND
plt<=20000 OR
ime='Marko';
10. Izlistati radnike koji se prezivaju na slovo P.
SELECT *
FROM radnik
WHERE prz LIKE 'P%';
11. Prikazati radnike koji imaju efa.
SELECT *
FROM radnik
WHERE sef IS NOT NULL;
ZADACI I REENJA
16. Izlistati imena, prezimena i matine brojeve svih radnika koji rade na projektu sa ifrom 2 sem
rukovodioca tog projekta.
SELECT r.ime, r.prz, r.mbr
FROM radnik r, radproj rp, projekat p
WHERE r.mbr=rp.mbr AND
rp.spr=p.spr AND
p.ruk!= r.mbr AND
rp.spr=2;
17. Izlistati nazive i naruioce projekata na kojima radi radnik Milo Miloevi.
SELECT DISTINCT nap, nar
FROM projekat p, radnik r, radproj rp
WHERE rp.mbr=r.mbr AND
rp.spr=p.spr AND
r.ime='Milos' AND
r.prz='Milosevic';
Spajanje tabela na vee (NON EQUI JOIN). Spajanje tabele same sa sobom
(SELFJOIN).
18. Izlistati imena, prezimena i plate radnika koji imaju platu veu od radnika sa matinim brojem 10.
SELECT r.ime, r.prz, r.plt
FROM radnik r, radnik r1
WHERE r1.mbr=10 AND
r.plt>r1.plt;
19. Izlistati imena i prezimena radnika i ime i prezime njegovog efa kao SEF
SELECT r.ime, r.prz, s.ime||' '||s.prz AS sef
FROM radnik r, radnik s
WHERE r.sef=s.mbr;
20. Izlistati nazive i ifre projekata na kojima radi bar jedan radnik koji radi i na projektu sa ifrom 2.
SELECT DISTINCT p.nap, p.spr
FROM projekat p, radproj rp, radproj rp1
WHERE p.spr=rp.spr AND
rp.mbr=rp1.mbr AND
rp1.spr=2 AND
rp.spr!=rp1.spr;
Marija Raki-Skokovi
ZADACI I REENJA
Marija Raki-Skokovi
ZADACI I REENJA
Grupne (skupovne) aritmetike funkcije nad numerikim poljima: AVG, SUM, MAX,
MIN, COUNT
28. Kolika je prosena plata radnika?
SELECT AVG(plt) "Prosecna plata"
FROM radnik;
29. Kolika je ukupna plata svih radnika?
SELECT SUM(plt) "Ukupna plata"
FROM radnik;
30. Kolika je ukupna godinja plata svih radnika?
SELECT SUM(plt)*12 "Ukupna godisnja plata"
FROM radnik;
31. Koliko ima radnika?
SELECT COUNT(*)"Broj radnika"
FROM radnik;
ZADACI I REENJA
36. Izlistati ifre i nazive projekata na kojima je proseno angaovanje vee od prosenog
angaovanja na svim projektima.
SELECT p.spr, p.nap, AVG(rp.brc), AVG(rp1.brc)
FROM radproj rp, radproj rp1, projekat p
WHERE rp.spr=p.spr
GROUP BY p.spr, p.nap
HAVING AVG(rp.brc)>AVG(rp1.brc);
ili
SELECT p.spr, p.nap, round(AVG(rp.brc),2)
FROM radproj rp, radproj rp1, projekat p
WHERE rp.spr=p.spr
GROUP BY p.spr, p.nap
HAVING AVG(rp.brc)>AVG(rp1.brc);
37. Izlistati ifre i nazive projekata na kojima radi vie od 3 radnika.
SELECT p.spr, p.nap
FROM radproj rp, projekat p
WHERE rp.spr=p.spr
GROUP BY p.spr, p.nap
HAVING COUNT(*)>3;
Podupit koji vraa skup vrednosti. Skupovni operatori: IN (logiki jednak '=ANY') i
NOT IN (logiki jednak '!=ALL')
40. Izlistati matine brojeve, imena i prezimena radnika koji rade na projektu sa ifrom 1
SELECT mbr, ime, prz
FROM radnik
WHERE mbr IN(SELECT mbr
FROM radproj
WHERE spr=1);
Ili
Marija Raki-Skokovi
ZADACI I REENJA
Marija Raki-Skokovi
ZADACI I REENJA
ime, prz
rp
rp.spr=1
ime, prz
rp
rp.spr=5;
ime, prz
rp
rp.spr=1
ime, prz
rp
rp.spr=5;
ime, prz
rp
rp.spr=1
ime, prz
rp
rp.spr=5;
ZADACI I REENJA
Kreiranje pogleda
CREATE VIEW <naziv pogleda> [<lista obelezja>] AS
SELECT upit;
52. Kreirati pogled Ruk (rime, rprz, rplt,rpr) koji e prikazivati imena, prezimena i plate rukovodilaca
projekata i ifre projekata kojima rukovode.
CREATE VIEW Ruk (rime, rprz, rplt,rpr) AS
SELECT DISTINCT ime, prz, plt, spr
FROM radnik r, projekat p
WHERE r.mbr=p.ruk;
53. Izlistati sve rukovodioce projekata.
SELECT * FROM Ruk;
54. Koji rukovodilac (ime, prezime) ima najmanju platu?
SELECT DISTINCT rime, rprz
FROM Ruk
WHERE rplt=
(SELECT MIN(rplt) FROM Ruk);
Marija Raki-Skokovi
10
ZADACI I REENJA
55. Kreirati pogled Nesef koji ce prikazivati podatke o radnicima koji nisu rukovodioci projekata.
CREATE VIEW nesef AS
SELECT *
FROM radnik r
WHERE NOT EXISTS
(SELECT ruk
FROM projekat p
WHERE p.ruk=r.mbr);
Marija Raki-Skokovi
11