Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.76 KB | None | 0 0
  1. -- sa se afiseze departamentul cu cel mai mare salariu mediu
  2.  
  3. describe angajati;
  4. describe departamente;
  5.  
  6.  
  7. SELECT AVG(salariul)
  8. FROM  angajati a, departamente d
  9. WHERE a.id_departament = d.id_departament;
  10.  
  11. SELECT AVG(salariul) sal_mediu, denumire_departament
  12. FROM  angajati a, departamente d
  13. WHERE a.id_departament = d.id_departament
  14. GROUP BY denumire_departament
  15. HAVING AVG(salariul) = (SELECT MAX (AVG(salariul)) FROM angajati GROUP BY id_departament)
  16. ORDER BY 1 DESC;    -- in order by putem folosi aliasuri, in having nu
  17.  
  18. SELECT * FROM
  19. (SELECT AVG(salariul) sal_mediu, denumire_departament
  20. FROM  angajati a, departamente d
  21. WHERE a.id_departament = d.id_departament
  22. GROUP BY denumire_departament
  23. ORDER BY 1 DESC)
  24. WHERE ROWNUM = 1;   -- <= 3 => primele 3 in rodinea salariilor medii  
  25.  
  26.  
  27. SET serveroutput ON;
  28. DECLARE
  29. V_DEN VARCHAR2(200);
  30. V_SAL NUMBER;
  31.  
  32. BEGIN
  33.  
  34. V_DEN := 'abcd';   --operator de atribuire
  35. SELECT AVG(salariul) sal_mediu, denumire_departament      INTO V_SAL, V_DEN  --selectul trebuie sa returneze un rand! nu 0, nu 3
  36. FROM  angajati a, departamente d
  37. WHERE a.salariul = d.id_departament
  38. GROUP BY denumire_departament
  39. --having avg(salariul) = (select max (avg(salariul)) from angajati group by id_departament)
  40. ORDER BY 1 DESC;
  41.  
  42. DBMS_OUTPUT.put_line('Departementul '|| V_DEN || ' are salariul '|| ROUND(V_SAL, 2));
  43.  
  44. EXCEPTION
  45.     WHEN VALUE_ERROR THEN
  46.     DBMS_OUTPUT.PUT_LINE('Valoare prea mare');
  47.     WHEN TOO_MANY_ROWS THEN
  48.     DBMS_OUTPUT.PUT_LINE('Prea multe randuri');
  49.     WHEN OTHERS THEN   -- others e un handler
  50.     DBMS_OUTPUT.PUT_LINE('A aparut o execeptie: ' || SQLERRM); -- afiseaza exceptia aparuta
  51.                                                                -- la prima execeptie aparuta blocul se termina
  52. END;
  53. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement