Advertisement
Smudla

CV10

Dec 16th, 2015
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.56 KB | None | 0 0
  1. SELECT jmeno, prijmeni FROM A_HR.zamestnanci
  2. WHERE LEVEL = 3 CONNECT BY PRIOR zamestnanec_id = manazer_id START WITH zamestnanec_id = 101;
  3. /%%/
  4. SELECT jmeno, prijmeni, mzda, AVG(mzda) over (PARTITION BY oddeleni_id) FROM A_Hr.zamestnanci;
  5. /%%/
  6. SELECT jmeno, prijmeni, oddeleni_nazev, mzda, LAST_VALUE (mzda) over (PARTITION BY oddeleni_id ORDER BY
  7. mzda rows BETWEEN unbounded preceding AND unbounded following) - mzda pod_max,
  8. mzda - LAST_VALUE(mzda) over (PARTITION BY oddeleni_id ORDER BY mzda) nax_max
  9. FROM A_hr.zamestnanci join A_hr.oddeleni using (oddeleni_id) ORDER BY oddeleni_nazev;
  10.  
  11. SELECT oddeleni_nazev, listagg(prijmeni || '(' || pozice_nazev || ')',',')
  12. within GROUP (ORDER BY prijmeni)
  13. FROM a_hr.zamestnanci join A_HR.oddeleni using (oddeleni_id) join A_Hr.prac_pozice using (pozice_id)
  14. GROUP BY oddeleni_nazev;
  15.  
  16. /%%/
  17. CREATE OR REPLACE FUNCTION ZK_predchudci_vek(p_id IN NUMBER)
  18. RETURN VARCHAR2 AS
  19. v_narozen DATE;
  20. v_toReturn VARCHAR2(200);
  21. BEGIN
  22. SELECT narozen INTO v_narozen FROM A_clovek.lide WHERE id=p_id;
  23. FOR x IN (
  24. SELECT jmeno, prijmeni, TRUNC((TO_DATE('13.10.1988','DD.MM.YY')-narozen)/365.25) vek
  25. FROM a_clovek.lide WHERE
  26. LEVEL >=2
  27. CONNECT BY id IN (PRIOR id_otce, PRIOR id_matky)
  28. START WITH id=p_id ORDER BY 3
  29. )
  30. LOOP
  31. v_toReturn := v_toReturn || x.prijmeni || ' ' || x.jmeno ||
  32. ' (' || x.vek || ');';
  33. END LOOP;
  34. IF
  35. v_toReturn IS NULL THEN
  36. v_toReturn := 'Zadni Predchudci';
  37. END IF;
  38. RETURN v_toReturn;
  39. EXCEPTION
  40.     WHEN NO_DATA_FOUND THEN
  41.     raise_application_error(-20001,'Osoba v tabulce lide neexistuje!');
  42. RETURN NULL;
  43. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement