You are on page 1of 2

ZADACI IZ UVODA

1. Naći zaposlene čija stručna sprema ima naziv Visoka.


SELECT * FROM Zaposleni AS Z, STR_Sprema AS S WHERE ( Z.[s_sprema_id] = S.[id] and
S.naziv = 'Visoka');
2. Za svakog radnika izlistati jmbg i ukupno radno vrijeme.
SELECT JMBG, ime, sum(r_vrijeme) AS Ukupno_R_Vrijeme FROM zaposleni AS Z, radi AS R
WHERE (Z.JMBG = R.zap_jmbg) GROUP BY JMBG, ime;
3. Za svaki departman izlistati naziv i broj radnika pod uslovom da je broj radnika veći
od 10.
SELECT D.naziv, count(zap_jmbg) AS BrojRadnika FROM departman AS D, radi AS R WHERE
(D.ID=R.dept_id) GROUP BY D.naziv HAVING (count(zap_jmbg)>4);
4. Naći radnike koji rade u makar dva departmana.
SELECT ime, JMBG FROM Zaposleni AS Z, Departman AS D, Radi AS R WHERE (Z.[JMBG] = R.
[zap_jmbg] and R.[dept_id] = D.[ID]) GROUP BY z.[jmbg], ime HAVING count(D.id)>=2;
5. Naći parove JMBG, ID takve da radnik identifikovan sa JMBG ne radi u departmanu
koji je identifikovan sa ID.
SELECT JMBG, ID FROM Zaposleni AS Z, Departman AS D WHERE not exists (SELECT JMBG, ID
FROM Zaposleni as Z1, Radi as R1, Departman as D1 WHERE ( Z1.[JMBG] = R1.[zap_jmbg] and
R1.[dept_id] = D1.[ID] and Z.[JMBG] = Z1.[JMBG] and D.[ID] = D1.[ID]));
6. Naći najstarijeg radnika.
SELECT ime FROM zaposleni WHERE god_rodj in (SELECT MIN(god_rodj) FROM zaposleni);
7. Naći departmane u kojima isključivo rade radnici rođeni poslije 1950.
SELECT D.naziv, Z.ime FROM Departman as D, Zaposleni as Z, Radi as R WHERE
Z.jmbg=R.zap_jmbg and D.id=R.dept_id and Z.god_rodj >1950
8. Naći radnika koji radi u svakom deprtmanu.
SELECT Z.ime, count(*) FROM Radi AS R, Zaposleni AS Z WHERE Z.JMBG=R.ZAP_JMBG
GROUP BY Z.ime HAVING count(*)=(select count(*) from departman);
9. Naći departman sa najvećim brojem radnika.
SELECT TOP 1 * FROM (SELECT dept_id, count(*) AS br_rad FROM RADI GROUP BY dept_id)
AS A ORDER BY br_rad DESC;
10. Naći departman u kojem nema radnika sa srednjom stručnom spremom.
SELECT D.naziv FROM Zaposleni AS Z, Departman AS D, Radi AS R WHERE D.ID=R.DEPT_ID
AND EXISTS ( SELECT * FROM Zaposleni AS Z, STR_Sprema AS S WHERE ( Z.[s_sprema_id] = S.
[id] and S.naziv = 'Visoka' and S.naziv = 'Visa'));
11. Naći parove radnika koji su isto godište.
SELECT Z1.ime, Z2.ime FROM Zaposleni AS Z1, Zaposleni AS Z2 WHERE
Z1.god_rodj=Z2.god_rodj AND Z1.ime<>Z2.ime;
12. Naći parove departmana koji imaju isti broj radnika.
SELECT D1.naziv, D2.naziv FROM (SELECT D.naziv, Count(R.dept_id) AS broj_radnika FROM
Departman AS D, Radi AS R WHERE (((D.id)=[R].[dept_id]) GROUP BY D.naziv) as D1,(SELECT
D.naziv, Count(R.dept_id) AS broj_radnika FROM Departman AS D, Radi AS R WHERE
(((D.id)=[R].[dept_id]) GROUP BY D.naziv) as D2 WHERE D1.broj_radnika=D2.broj_radnika and
D1.naziv<>D2.naziv
13. Naći stručnu spremu koju posjeduju makar dva radnika koji su angažovani u
departmanu čiji je naziv IT.
SELECT S.naziv FROM Departmen AS D, Radi AS R, Zaposleni AS Z, STR_Sprema AS S WHERE
D.ID=R.dept_id AND R.zap_jmbg=Z.jmbg AND S.id=Z.S_sprema_id AND D.naziv='IT';
14. Naći stručnu spremu koju posjeduju makar dva radnika koji su angažovani u
departmanu koji ima najveći broj radnika.
SELECT S.naziv
FROM(SELECT* FROM Departmen AS D, Radi AS R, Zaposleni AS Z, STR_sprema AS S
WHERE D.ID=R.dept_id AND R.zap_jmbg=Z.jmbg AND S.ID=Z.S_sprema_id)WHERE
D.naziv=(SELECT MAX(D.naziv)FROM(SELECT D.naziv, COUNT(*)
FROM Departmen AS D, Radi AS R, Zaposleni AS Z, STR_sprema AS S WHERE D.ID=R.dept_id AND
R.zap_jmbg=Z.jmbg AND S.ID=Z.S_sprema_id GROUP BY D.NAZIV));
15. Naći radnike čiji je ukupan broj sati rada veći od prosječnog ukupnog broja sati
rada radnika

SELECT Z.ime,SUM(r_vrijeme) FROM Radi AS R, Zaposleni AS Z WHERE R.zap_jmbg=Z.jmbg and R.


SUM(r_vrijeme) > (SELECT AVG(SUM(r_vrijeme))FROM Radi)

You might also like