Advertisement
Smudla

IDASCV10

Jan 11th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.52 KB | None | 0 0
  1. SELECT jmeno, prijmeni FROM A_HR.zamestnanci
  2. WHERE LEVEL = 3 CONNECT BY PRIOR
  3. zamestnanec_id = MANAZER_ID START WITH zamestnanec_id = 101;
  4.  
  5.  
  6. SELECT jmeno, prijmeni, mzda, AVG(mzda)
  7. OVER (PARTITION BY oddeleni_id) FROM A_HR.zamestnanci;
  8.  
  9.  
  10. SELECT jmeno, prijmeni, oddeleni_nazev, mzda,
  11. LAST_VALUE(mzda) OVER (PARTITION BY oddeleni_id ORDER BY
  12. mzda ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) - mzda pod_max,
  13. mzda - LAST_VALUE(mzda) OVER (PARTITION BY oddeleni_id ORDER BY mzda) nad_max
  14. FROM A_HR.zamestnanci JOIN A_HR.oddeleni USING(oddeleni_id)
  15. ORDER BY oddeleni_NAZEV;
  16.  
  17.  
  18. SELECT oddeleni_nazev, LISTAGG(prijmeni || '(' || pozice_nazev ||')',',')
  19. WITHIN GROUP (ORDER BY prijmeni)
  20. FROM A_HR.zamestnanci JOIN A_HR.oddeleni USING(oddeleni_id)
  21. JOIN A_HR.prac_pozice USING(pozice_id)
  22. GROUP BY oddeleni_nazev;
  23.  
  24. CREATE OR REPLACE FUNCTION zk_predchudci_vek (p_id NUMBER) RETURN VARCHAR2 AS
  25. i_narozen DATE;
  26. i_vysledek VARCHAR2(300);
  27. BEGIN
  28. SELECT narozen INTO i_narozen FROM a_clovek.lide WHERE id = p_id;
  29. FOR X IN (SELECT jmeno, prijmeni, ROUND(((i_narozen-narozen) /365.25),2) vek FROM A_CLOVEK.LIDE WHERE LEVEL >= 2
  30. CONNECT BY id IN (PRIOR id_otce, PRIOR id_matky)
  31. START WITH id = p_id ORDER BY 3)
  32. LOOP
  33. i_vysledek := i_vysledek || x.prijmeni || ' ' || x.jmeno || '(' || x.vek || ');';
  34. END LOOP;
  35. IF i_vysledek IS NULL THEN
  36. i_vysledek := 'Nejsou zadni predchudci';
  37. END IF;
  38. RETURN i_vysledek;
  39. EXCEPTION
  40. WHEN NO_DATA_FOUND THEN
  41. raise_application_error(-20001, 'Zadany clovek neexistuje');
  42. END zk_predchudci_VEK;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement