Untitled

 avatar
unknown
mysql
3 years ago
5.4 kB
128
Indexable
PRIPREMA

1. Prikazati imena zaposlenih koji rade na istim projektima kao Andrija.
SELECT ime
FROM radnik, ucesce
WHERE radnik.id_radnika = ucesce.id_radnika
	and id_projekta IN (SELECT id_projekta
						FROM radnik, ucesce
                        WHERE radnik.id_radnika = ucesce.id_radnika
							and ime = "Andrija")

2. Prikazati prosečna primanja zaposlenih po odeljenjima, samo za odeljenja u kojima je
prosek veći od 2800.
SELECT id_odeljenja, AVG(plata+ifnull(premija,0)) as "Prosecna primanja"
FROM radnik
GROUP BY id_odeljenja
HAVING AVG(plata+ifnull(premija,0)) > 2800

3. Prikazati imena projekata i broj zaposlenih angažovanih na njima, za projekte na kojima
je angažovano između 1 i 3 zaposlenih (uključujući i te vrednosti).
SELECT ime_proj, COUNT(id_radnika)
FROM ucesce, projekat
WHERE ucesce.id_projekta = projekat.id_projekta
GROUP BY ucesce.id_projekta
HAVING COUNT(id_radnika) between 1 and 3

4. Prikazati sve podatke o odeljenjima u kojima ima zaposlenih radnika.
SELECT odeljenje.*
FROM odeljenje
WHERE id_odeljenja IN (SELECT id_odeljenja
						FROM radnik)

5. Prikazati imena zaposlenih i njihova ukupna primanja za zaposlene čija su ukupna
primanja manja od 2000 ili veća od 3000, ime im počinje slovom ‘M’ ili ‘P’, a zaposleni
su u odeljenju Plan. Rezultate urediti po ukupnim primanjima u rastućem redosledu.
SELECT ime, plata+ifnull(premija,0) as "Primanja"
FROM radnik, odeljenje
WHERE radnik.id_odeljenja = odeljenje.id_odeljenja
	and ime_od = "Plan"
    and (ime like "M%" OR ime like "P%")
ORDER BY plata+ifnull(premija,0)

6. Prikazati projekte na kojima radi Vanjin šef.
SELECT ucesce.*
FROM projekat, ucesce
WHERE projekat.id_projekta = ucesce.id_projekta
	and id_radnika = (SELECT sef_odeljenja
					FROM radnik, odeljenje
                    WHERE radnik.id_odeljenja = odeljenje.id_odeljenja
						and ime = "Vanja")

7. Prikazati imena i poslove radnika, kao i broj i imena projekata na kojima rade, uključujući
i radnike koji ne rade ni na jednom projektu.
SELECT ime, posao, ucesce.id_projekta, ime_proj
FROM radnik left join ucesce on radnik.id_radnika = ucesce.id_radnika left join projekat on ucesce.id_projekta = projekat.id_projekta

8. Zaposlenima čija je kvalifikacija KV ukinuti angažovanje na projektima na kojima imaju
funkciju izvršioca. Povećati sredstva 10% za projekte na kojima radi Pavle.
DELETE
FROM ucesce
WHERE funkcija = "Izvrsioc"
	and id_radnika in (SELECT id_radnika
						FROM radnik
						WHERE kvalif = "KV")
                        
UPDATE projekat
SET sredstva = sredstva * 1.1
WHERE id_projekta IN (SELECT id_projekta
					FROM ucesce, radnik
                    WHERE ucesce.id_radnika = radnik.id_radnika
						and ime = "Pavle")

9. Dodati podatke o novom radniku Milan Milananoviću koji nema rukovodioca, ima platu
od 33000 i premiju 5000. Ostali podaci nisu poznati.
INSERT INTO radnik(id_radnika, ime, prezime, plata, premija)
VALUES(1234,"Milan","Milovanovic","3300","5000")

10. U već postojeću tabelu KVALIFIKACIJA, čiji su atributi IDBR, IME, POSAO, PLATA i
PREMIJA dodati dodati podatke o radnicima koji imaju kvalifikaciju VKV ili KV.
INSERT INTO kvalifikacija
SELECT id_radnika, ime, posao, plata, premija
FROM radnik
WHERE kvalif IN ("VKV","KV")

11. Kreirati pogled (VIEW) koji prikazuje ime zaposlenog, datum zaposlenja, platu i mesto u
kome radi za zaposlene čija je kvalifikacija VKV ili ne primaju premiju. Rezultate urediti
po plati u rastućem redosledu.
CREATE VIEW View_Zaposleni as
SELECT ime, dat_zap, plata, mesto
FROM radnik, odeljenje
WHERE radnik.id_odeljenja = odeljenje.id_odeljenja
	and (kvalif = "VKV" OR premija is null OR premija = 0)
ORDER BY plata

12. Prikazati ime, prezime, smer studenta koji su u školskoj 2019/20. godini birali predmet
Baze podataka.
SELECT ime, prezime, smer
FROM student, predmet, student_predmet
WHERE student_predmet.id_predmeta = predmet.id_predmeta
	and student_predmet.id_studenta = student.id_studenta
    and skolska_godina = "2019/20"
    and naziv = "Baze podataka"

13. Prikazati prosečne ocene po predmetima u januarskom ispitnom roku šk.2018/19
SELECT predmet.naziv, AVG(ocena)
FROM predmet, zapisnik, ispitni_rok, ispit
WHERE predmet.id_predmeta = ispit.id_predmeta
	and ispit.id_roka = ispitni_rok.id_roka
    and ispit.id_ispita = zapisnik.id_ispita
    and ispitni_rok.naziv = "Januar"
    and skolska_god = "2018/19"
GROUP BY predmet.naziv
    
14. U školskoj 2018/19. godini, za studenta Lazara Markovića zameniti predmet Veb dizajn
sa predmetom Baze podataka.
UPDATE student_predmet
SET id_predmeta = (SELECT id_predmeta
					FROM predmet
					WHERE naziv = "Baze podataka")
WHERE skolska_godina = "2018/19"
	and id_studenta = (SELECT id_studenta
						FROM student
						WHERE ime = "Lazar" and prezime = "Markovic")
	and id_predmeta = (SELECT id_predmeta
						FROM predmet
						WHERE naziv = "Veb dizajn")

15. Kreirati funkciju fun_prosek koja vraća prosečnu ocenu na osnovu unetog naziva i
datuma održavanja ispita. 
DELIMITER $$
CREATE FUNCTION fun_prosek(ime char(40), datumIspita date)
returns float
begin
declare prosek float;
SELECT AVG(ocena) into prosek
FROM zapisnik, predmet, ispit
WHERE ispit.ID_PREDMETA = predmet.ID_PREDMETA
	and ispit.ID_ISPITA = zapisnik.ID_ISPITA
    and predmet.naziv = ime
    and datum = datumIspita;
return prosek;
end$$
DELIMITER ;

SELECT fun_prosek("Objektno programiranje 1", "2019-02-18")
Editor is loading...