Guest User

Untitled

a guest
May 24th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.52 KB | None | 0 0
  1. /*Procedura na konzoli vypíše města (viz. obrázek), která budou vyhovovat vstupním parametrům.
  2. Parametry P_PRUM_MZDA_OD a P_PRUM_MZDA_DO reprezentují rozsah průměrné mzdy pracovníků v daném městě,
  3. které se má zobrazit. Druhá dvojice atributů, P_PRUM_LET_OD a P_PRUM_LET vyjadřují, v jakém rozsahu musí být průměr
  4. odpracovaných let pracovníků pracujících v daném městě(odpracovaná léta se počítají od data nástupu do teď).
  5. Ve výpise se musí kromě názvu města objevit i ve kterém statě a regionu se město nachází,
  6. jaká je průměrná mzda v daném městě a kolik zaměstnanců ve městě pracuje.
  7.  
  8. London (United Kingdon, Europe):
  9. Počet zaměstnanců: 1
  10. Průmerná mzda: 6500
  11. Průměrně odpracováno: 18*/
  12.  
  13.  
  14.  
  15. CREATE OR REPLACE PROCEDURE
  16. ZK_HR_MESTA(P_PRUM_MZDA_OD IN NUMBER, P_PRUM_MZDA_DO IN NUMBER, P_PRUM_LET_OD IN NUMBER, P_PRUM_LET_DO IN NUMBER ) AS
  17.  
  18. mesto varchar2(100);
  19. stat varchar2(100);
  20. region varchar2(100);
  21. pocetZam NUMBER;
  22. prum_mzda NUMBER;
  23. prum_odprac NUMBER;
  24.  
  25. cursor k1 IS SELECT adr.mesto,zem.zeme_nazev,regiony.region_nazev,
  26. COUNT(zam.zamestnanec_id) pocet_zam, (SUM(zam.mzda)/COUNT(zam.zamestnanec_id)) prum_mzda,
  27. (SUM(sysdate-zam.datum_nastup)/COUNT(sysdate-zam.datum_nastup)) /365.25 AS prumer
  28. FROM a_hr.adresy adr
  29. JOIN a_hr.oddeleni odd ON odd.adresa_id = adr.adresa_id
  30. JOIN a_hr.zeme zem ON zem.zeme_id = adr.zeme_id
  31. JOIN a_hr.regiony ON regiony.region_id =zem.region_id
  32. JOIN a_hr.zamestnanci zam ON zam.oddeleni_id = odd.oddeleni_id
  33. HAVING (SUM(zam.mzda)/COUNT(zam.zamestnanec_id)) >= P_PRUM_MZDA_OD AND (SUM(zam.mzda)/COUNT(zam.zamestnanec_id)) <= P_PRUM_MZDA_DO AND
  34. (SUM(sysdate-zam.datum_nastup)/COUNT(sysdate-zam.datum_nastup)) /365.25 >= P_PRUM_LET_OD AND (SUM(sysdate-zam.datum_nastup)/COUNT(sysdate-zam.datum_nastup)) /365.25 <= P_PRUM_LET_DO
  35. GROUP BY adr.mesto, zem.zeme_nazev, regiony.region_nazev;
  36.  
  37. BEGIN
  38.   OPEN k1;
  39.       LOOP  
  40.       FETCH k1 INTO mesto, stat, region, pocetZam, prum_mzda, prum_odprac;
  41.       EXIT WHEN k1%NOTFOUND;
  42.           dbms_output.put_line(mesto || ' (' || stat || ', ' || region || ')');
  43.                     dbms_output.put_line('Počet zaměstnanců: ' || pocetZam);
  44.                     dbms_output.put_line('Průměrná mzda: ' || round(prum_mzda,0));
  45.                     dbms_output.put_line('Průměrně odpracováno: ' || round(prum_odprac,0));
  46.                     dbms_output.put_line('');
  47.                    
  48.       END LOOP;
  49.     close k1;  
  50. END ZK_HR_MESTA;
  51.  
  52. EXECUTE ZK_HR_MESTA(0, 100000000, 0, 50000);
Add Comment
Please, Sign In to add comment