My SQL Primjer evidencija rada na projektima Zaposleni























- Slides: 23
My SQL
Primjer: evidencija rada na projektima Zaposleni v v v Zaposleni. ID Ime zaposlenog Adresa zaposlenog Telefon zaposlenog Tip posla Plate v Tip posla v Opis posla v Plata Projekti v v Projekat. ID Naziv projekta Budžet projekta Menadžer. ID Menadžer v Menadžer. ID v Ime menadžera v Lokacija menadžera Zaposleni-Projekti v v Zaposleni. ID Projekat. ID Datum početka rada zaposlenog na projektu Datum završetka rada zaposlenog na projektu
E-R dijagram
Upiti 1. Naći id i imena svih zaposlenih SELECT ZAP_ID, IME_ZAP FROM zaposleni; 2. Naći sve podatke o svim zaposlenim SELECT * FROM zaposleni; 3. Naći imena svih zaposlenih iz Podgorice SELECT IME_ZAP FROM zaposleni WHERE ADR_ZAP="Pg";
DISTINCT 4. Naći sve gradove iz kojih su zaposleni SELECT ADR_ZAP FROM zaposleni; SELECT DISTINCT ADR_ZAP FROM zaposleni; 5. Naći iz koliko različitih gradova su zaposleni SELECT COUNT( DISTINCT ADR_ZAP) FROM zaposleni;
GROUP BY, HAVING 6. Naći koliko zaposlenih dolazi iz pojedinih gradova SELECT COUNT(*), ADR_ZAP FROM zaposleni GROUP BY ADR_ZAP; 7. Naći sve gradove iz kojih dolaze po 2 zaposlena SELECT COUNT(*), ADR_ZAP FROM zaposleni GROUP BY ADR_ZAP HAVING COUNT(*)=2;
ORDER BY 8. Naći sve zaposlene sortirane abecednim redom po gradu iz kojeg dolaze a u okviru svakog grada po imenu zaposlenog u opadajućem redosledu SELECT ADR_ZAP, IME_ZAP FROM zaposleni ORDER BY ADR_ZAP asc, IME_ZAP desc; 9. Naći tipove posla koje radi više od 2 zaposlena SELECT COUNT(*), TIP_POSLA FROM zaposleni GROUP BY TIP_POSLA HAVING COUNT(*)>2;
Spajanje 10. Naći dekartov proizvod relacija zaposleni i posao SELECT * FROM zaposleni, posao; 11. Naći spajanje relacija zaposleni i posao SELECT * FROM zaposleni, posao WHERE zaposleni. TIP_POSLA=posao. TIP_POSLA; 12. Naći koliko n-torki ima dekartov proizvod a koliko spajanje SELECT COUNT(*) FROM zaposleni, posao; SELECT COUNT (*) FROM zaposleni, posao WHERE zaposleni. TIP_POSLA=posao. TIP_POSLA;
Spajanje 13. Naći ime zaposlenog, opis i platu posla koje obavljaju. Urediti po imenu zaposlenog u opadajućem redosledu. SELECT IME_ZAP, OPIS_POSLA, PLATA FROM zaposleni Z, posao P WHERE Z. TIP_POSLA=P. TIP_POSLA ORDER BY IME_ZAP desc; 14. Naći opis posla i platu za zaposlene koji rade na projektu P 1. SELECT DISTINCT OPIS_POSLA, PLATA FROM posao P, zaposleni Z, zap_proj X WHERE P. TIP_POSLA = Z. TIP_POSLA AND Z. ZAP_ID = X. ZAP_ID AND X. PRO_ID = "P 1";
Samospoj 15. Naći sve zaposlene koji rade isti tip posla kao Senić Radoš SELECT Z 2. IME_ZAP FROM zaposleni Z 1, zaposleni Z 2 WHERE Z 1. TIP_POSLA = Z 2. TIP_POSLA AND Z 1. IME_ZAP = "Senić Radoš"; 16. Naći sve zaposlene koji su iz istog grada kao Petrović Rajko SELECT Z 2. IME_ZAP FROM zaposleni Z 1, zaposleni Z 2 WHERE Z 1. ADR_ZAP = Z 2. ADR_ZAP AND Z 1. IME_ZAP = "Petrović Rajko";
Spajanje 17. Naći poslove i plate koje rade zaposleni koji su angažovani na projektu kojim upravlja menadžer Jana Marković SELECT OPIS_POSLA, PLATA FROM posao P, zaposleni Z, zap_proj X, projekti R, menadzer M WHERE P. TIP_POSLA=Z. TIP_POSLA AND Z. ZAP_ID=X. ZAP_ID AND X. PRO_ID=R. PRO_ID AND R. MENADZER_ID=M. MENADZER_ID AND M. IME_MEN="Jana Marković ";
Podupiti 18. Naći zaposlene koji nisu angažovani ni na jednom projektu SELECT ZAP_ID, IME_ZAP FROM zaposleni WHERE ZAP_ID NOT IN (SELECT ZAP_ID FROM zap_proj ); 19. Naći menadžere koji ne vode ni jedan projekat SELECT MENADZER_ID, IME_MEN FROM menadzer WHERE MENADZER_ID NOT IN (SELECT MENADZER_ID FROM projekti);
Podupiti 20. Naći zaposlene na projektu Tržni centar Enigma Bar koji primaju najveću platu u preduzeću SELECT Z. ZAP_ID, IME_ZAP, OPIS_POSLA, PLATA FROM zaposleni Z, posao P, zap_proj X, projekti R WHERE P. TIP_POSLA=Z. TIP_POSLA AND Z. ZAP_ID=X. ZAP_ID AND X. PRO_ID=R. PRO_ID AND R. NAZ_PRO= "Tržni centar Enigma Bar " AND P. PLATA= (SELECT MAX(PLATA) FROM posao);
Podupiti 21. Naći projekte koji imaju budžet veći od svih projekata kojim upravljaju menadžeri iz Podgorice SELECT PRO_ID, NAZ_PRO, BUDZET FROM projekti P, menadzer M WHERE P. MENADZER_ID=M. MENADZER_ID AND P. BUDZET> ALL (SELECT BUDZET FROM menadzer M, projekti P WHERE M. MENADZER_ID=P. MENADZER_ID AND M. LOK_MEN='Podgorica');
Podupiti 22. Naći zaposlene koji imaju veću ili jednaku platu od svih zaposlenih angažovanih na projektu Hotel Mediteran Budva SELECT ZAP_ID, IME_ZAP, OPIS_POSLA, PLATA FROM zaposleni Z, posao P WHERE Z. TIP_POSLA=P. TIP_POSLA AND P. PLATA >= ALL (SELECT PLATA FROM zaposleni Z, posao P, zap_proj X, projekti R WHERE Z. TIP_POSLA=P. TIP_POSLA AND Z. ZAP_ID = X. ZAP_ID AND X. PRO_ID= R. PRO_ID AND R. NAZ_PRO = 'Hotel Mediteran Budva');
Datumi 23. Naći sve zaposlene koji su počeli rad na projektima u tekućoj godini SELECT Z. ZAP_ID, IME_ZAP, DAT_POC FROM zaposleni Z, zap_proj X WHERE Z. ZAP_ID = X. ZAP_ID AND X. DAT_POC BETWEEN "2018 -01 -01" AND "2018 -12 -30" ; 24. Naći zaposlene koji su počeli sa radom u tekućoj godini a zavrsiće u narednoj SELECT Z. ZAP_ID, IME_ZAP, DAT_POC, DAT_ZAV FROM zaposleni Z, zap_proj X WHERE Z. ZAP_ID = X. ZAP_ID AND X. DAT_POC BETWEEN "2018 -01 -01" AND "2018 -12 -30" AND X. DAT_ZAV BETWEEN "2019 -01 -01" AND "2019 -12 -30 ";
Datumi 25. Naći projekte na kojima su angažovani zidari kao i njihova imena, koji sa radom na tim projektima završavaju do kraja tekuće godine SELECT NAZ_PRO, IME_ZAP, OPIS_POSLA FROM zaposleni Z, posao P, zap_proj X, projekti R WHERE Z. TIP_POSLA=P. TIP_POSLA AND Z. ZAP_ID = X. ZAP_ID AND X. PRO_ID= R. PRO_ID AND P. OPIS_POSLA= "Zidar" AND X. DAT_ZAV< "2018 -12 -31 ";
26. Naći zaposlene i projekte kojima upravljaju menadžeri Jana Marković i Jovanović Maša SELECT IME_ZAP, NAZ_PRO FROM projekti P, zap_proj Z, menadzer M, zaposleni X WHERE M. MENADZER_ID=P. MENADZER_ID AND P. PRO_ID = Z. PRO_ID AND Z. ZAP_ID=X. ZAP_ID AND (M. IME_MEN="Jana Marković" OR M. IME_MEN="Jovanović Maša") ;
Ispit-primjer 1. Sastaviti SQL upite i snimiti na My Documents pod nazivima: Ime. Prezime 1 Ime. Prezime 2 Ime. Prezime 3 1. Poslati upite na e-mail poslovna. inf 3008@gmail. com
1. Naći nazive projekata na kojima su angažovani zidari. 2. Naći ukupne budžete projekata po menadžerima u rastućem abecednom redu 3. Naći menadžere koji vode projekte sa najvećim budžetom
1. SELECT NAZ_PRO FROM projekti P, zap_proj X, zaposleni Z, posao O WHERE P. PRO_ID = X. PRO_ID AND X. ZAP_ID= Z. ZAP_ID AND Z. TIP_POSLA=O. TIP_POSLA AND O. OPIS_POSLA="Zidar"; 2. SELECT MENADZER_ID, SUM(BUDZET) FROM projekti GROUP BY MENADZER_ID ORDER BY MENADZER_ID asc;
3. SELECT IME_MEN, NAZ_PRO, BUDZET FROM menadzer M, projekti P WHERE M. MENADZER_ID=P. MENADZER_ID AND P. BUDZET = (SELECT MAX(BUDZET) FROM projekti);
Zadaci za vježbu v Naći imena zaposlenih koji su zidari. Urediti abecednim redom. v Naći koliko projekata vode pojedini menadžeri. Prikazati po imenu menadzera u rastućem abecednom redu. v Naći menadžere koji vode 2 ili više projekata. v Naći projekte koji imaju istog mendžera kao projekat Tržni centar Enigma Bar v Naći sve zaposlene i poslove koje obavljaju za projekte koje vodi Jana Marković v Naći koliko zaposlenih ima veću platu od svih koji rade na projektu Hotel Mediteran Budva v Naći koliko zaposlenih je započelo rad na projektima u tekućoj godini a završava u narednoj.