Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 5.94 KB | None | 0 0
  1. Vežba 6
  2.  
  3. GRUOP, HAVING, ORDER BY, AGREGATNE FUNKCIJE
  4. 1. Prikazati ime i broj odeljenja zaposlenih koji rade u odeljenju 10 ili 20, a kvalifikacija im je VKV.
  5. SELECT ime,Id_odeljenja FROM radnik WHERE (Id_odeljenja=10 OR Id_odeljenja=20) AND Kvalif=N'VKV'
  6. 2. Prikazati brojeve odeljenja i srednju platu u svakom od njih. Iz proračuna isključiti analitičare i upravnike. Rezultate urediti po prosečnim primanjima u rastućem redosledu.
  7. SELECT Id_odeljenja, AVG(plata) AS 'Prosecna plata' FROM radnik WHERE posao NOT IN(N'analitičar', N'upravnik') GROUP BY Id_odeljenja ORDER BY AVG(plata) ASC
  8. 3.Prikazati brojeve odeljenja i srednju platu u svakom od njih, samo za odeljenja u kojima je srednja plata veća od 2 000.
  9. SELECT Id_odeljenja, round(AVG(plata),2) AS 'Prosecna plata' FROM radnik GROUP BY Id_odeljenja HAVING AVG(plata)>2000
  10. 4.  Za svako odeljenje prikazati broj radnika i ukupna primanja. Ne prikazivati ukupna primanja neraspoređenih radnika.
  11.  SELECT Id_odeljenja, COUNT (*) AS [Broj radnika], SUM(plata+ISNULL(premija,0)) AS [Ukupna primanja] FROM RADNIK WHERE Id_odeljenja is NOT NULL GROUP BY Id_odeljenja
  12. 5. Ko su najbolje plaćeni radnici u celom preduzeću i u kom broju odeljenja rade?
  13. SELECT ime, Id_odeljenja FROM RADNIK where plata in (select max(plata) from radnik)
  14. INNER JOIN
  15. 6. Prikazati imena projekata i broj radnika na njima za sve projekte na kojima radi više od 3 radnika. SELECT Ime_proj, COUNT(*) AS [BROJ RADNIKA] FROM PROJEKAT, UCESCE WHERE PROJEKAT.Id_projekta=UCESCE.Id_projekta GROUP BY Ime_proj HAVING COUNT(*)>3
  16. 7. Prikazati idbr, ime, ime projekta i ukupna primanja radnika koji ne učestvuju na projektu izvoz i čija su ukupna primanja manja od 1500. Rezultate urediti po ukupnim primanjima u opadajućem redosledu, pa po imenu projekta u rastućem redosledu.
  17.  SELECT RADNIK.Id_radnika, ime, Ime_proj, plata+ ISNULL(premija,0) AS [UKUPNA PRIMANJA] FROM PROJEKAT, UCESCE, RADNIK WHERE PROJEKAT.Id_projekta=UCESCE.Id_projekta AND RADNIK.Id_radnika = UCESCE.ID_radnika AND Ime_proj <> N'izvoz' and plata + ISNULL(premija,0)
  18.  
  19. LEFT, RIGHT, FULL JOIN
  20. 8. Prikazati nazive odeljenja, ime i posao svakog radnika koji u njima rade, uključujući i radnike koji nisu raspoređeni ni u jednom odeljenju.
  21. a) Upotrebom desnog spajanja - RIGHT JOIN   b) Upotrebom LEFT JOIN
  22. a. SELECT ime_od, ime, posao FROM Odeljenje O RIGHT JOIN Radnik R ON R.Id_odeljenja = O.Id_odeljenja
  23. b. SELECT ime_od, ime, posao FROM Radnik R LEFT JOIN Odeljenje O ON R.Id_odeljenja = O.Id_odeljenja
  24. 9. Prikazati imena i poslove radnika, kao i broj i imena projekata na kojima rade samo za radnike koji ne rade ni na jednom projektu.
  25. SELECT RADNIK.Ime, RADNIK.Posao, PROJEKAT.Id_projekta, PROJEKAT.Ime_proj FROM PROJEKAT LEFT OUTER JOIN UCESCE ON PROJEKAT.Id_projekta = UCESCE.Id_projekta RIGHT OUTER JOIN RADNIK ON UCESCE.Id_radnika = RADNIK.Id_radnika WHERE PROJEKAT.Id_projekta IS NULL
  26. 10. Prikazati nazive odeljenja, ime i posao svakog radnika koji u njima rade uključujući i radnike koji nisu raspoređeni ni u jednom odeljenju, kao i odeljenja u kojima ne radi ni jedan radnik.
  27. SELECT Ime_od,Ime, Posao FROM RADNIK FULL OUTER JOIN ODELJENJE ON RADNIK.Id_odeljenja = ODELJENJE.Id_odeljenja
  28. 11. Prikazati imena radnika i imena projekata na kojima rade uključujući i projekte na kojima ne radi ni jedan radnik, kao i radnike koji ne rade ni na jednom projektu.
  29. SELECT Ime, Ime_proj FROM RADNIK FULL JOIN UCESCE ON RADNIK.Id_radnika = UCESCE.Id_radnika FULL JOIN PROJEKAT ON UCESCE.Id_projekta = PROJEKAT.Id_projekta
  30. 12. Prikazati imena radnika i imena njihovih neposrednih rukovodilaca.
  31. SELECT R.Ime AS [Ime radnika], R1.Ime AS [Ime rukovodioca] FROM RADNIK R INNER JOIN RADNIK R1 ON R.Rukovodilac = R1.Id_radnika
  32. INSERT
  33. 13. Dodati podatke o novom odeljenju čije je ime Računovodstvo, a broj odeljenja 60. INSERT INTO ODELJENJE VALUES (60, N'Racunovodstvo', NULL, NULL);
  34. 14. Kreirati praznu tabelu Penzionisani sa svim atributima kao tabela Radnik.
  35. select * into Penzionisani from radnik where ime='nesto'
  36. U već postojeću tabelu PENZIONISANI, sa svim istim atributima kao i tabela RADNIK, prebaciti sve podatke o zaposlenim pre 20.10.1971.
  37. INSERT INTO PENZIONISANI SELECT * FROM RADNIK WHERE Dat_zap < '1971-10-20'
  38. UPDATE
  39. 15. Zaposlenima u odeljenju smeštenom na Novom Beogradu povećati platu 30%.
  40.  UPDATE RADNIK SET plata = plata*1.3 WHERE Id_odeljenja = (SELECT Id_odeljenja FROM ODELJENJE WHERE mesto = 'Novi Beograd')
  41. 16. Svim konsultantima smanjiti platu za 25% i ukinuti premiju. UPDATE RADNIK SET Plata = Plata*0.75, Premija = NULL WHERE Id_radnika IN (SELECT Id_radnika FROM UCESCE WHERE Funkcija = 'konsultant');
  42. DELETE
  43. 17. Zaposlene čiji je rukovodilac Pavle izbaciti sa svih projekata.
  44. DELETE FROM UCESCE WHERE Id_radnika IN (SELECT Id_radnika FROM RADNIK WHERE Rukovodilac = (SELECT Id_radnika FROM RADNIK WHERE Ime = 'Pavle'))
  45. CASE
  46. 18.  Radnicima čija je kvalifikacija KV povećati platu 10%, VKV 5% a VSS smanjiti platu 5%.
  47.  update radnik set plata= case kvalif when 'KV' THEN plata*1.1 when 'VKV' THEN plata*1.05 when 'VSS' THEN plata*0.95 end
  48.  19.  Radnicima koji nemaju premiju dodeliti premiju 150. Radnicima čija je premija manja od 1000 povećati premiju 15% a ostalim radnicima ne menjati premiju.
  49.  update radnik set premija= case when premija is null THEN 150 when premija between 0 and 1000 THEN premija*1.15 else premija end
  50. 20. Prikazati ime i posao radnika cija je plata izmedju 1000 i 1500
  51. a) SELECT  ime, posao
  52. FROM   RADNIK  inner JOIN ODELJENJE  ON RADNIK.Id_odeljenja = ODELJENJE.Id_odeljenja where plata between 1000 and 1500
  53. b)SELECT  ime, posao
  54. FROM   RADNIK r inner JOIN ODELJENJE o ON r.Id_odeljenja = o.Id_odeljenja where plata between 1000 and 1500
  55. 21. Prikazati imena projekata, sredstva i imena radnika cije ime pocinje slovom a
  56. SELECT PROJEKAT.Ime_proj, PROJEKAT.Sredstva, RADNIK.Ime
  57. FROM PROJEKAT INNER JOIN UCESCE ON PROJEKAT.Id_projekta = UCESCE.Id_projekta INNER JOIN RADNIK ON UCESCE.Id_radnika = RADNIK.Id_radnika
  58. WHERE ime like N'a%'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement