Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.85 KB | None | 0 0
  1. --1.
  2.  
  3. SELECT denumire_departament, AVG(salariul) SAL_MEDIU
  4. FROM angajati a join departamente d
  5. ON a.id_departament=d.id_departament
  6. GROUP BY denumire_departament
  7. HAVING AVG(salariul)=(SELECT MAX(AVG(salariul)) FROM angajati GROUP BY id_departament)
  8. ORDER BY sal_mediu DESC;
  9. --alisaurile de coloana nu merg folosite in having
  10.  
  11. SELECT* FROM
  12. (SELECT denumire_departament, AVG(salariul) SAL_MEDIU
  13. FROM angajati a join departamente d
  14. ON a.id_departament=d.id_departament
  15. GROUP BY denumire_departament
  16. ORDER BY sal_mediu DESC)
  17. WHERE rownum<=1;--<=3 primele 3 in ordinea salariilor medii ,nu merge decat cu < sau <=
  18.  
  19. --daca vreau al treilea rand
  20.  
  21. SELECT* FROM
  22. (SELECT denumire_departament, AVG(salariul) SAL_MEDIU
  23. FROM angajati a join departamente d
  24. ON a.id_departament=d.id_departament
  25. GROUP BY denumire_departament
  26. ORDER BY sal_mediu DESC)
  27. WHERE rownum<=3
  28. MINUS
  29. SELECT* FROM
  30. (SELECT denumire_departament, AVG(salariul) SAL_MEDIU
  31. FROM angajati a join departamente d
  32. ON a.id_departament=d.id_departament
  33. GROUP BY denumire_departament
  34. ORDER BY sal_mediu DESC)
  35. WHERE rownum<=2;
  36.  
  37.  
  38.  
  39.  
  40. DECLARE
  41. V_DEN VARCHAR2(50);
  42. V_SAL NUMBER;
  43.  
  44.  
  45.  
  46. BEGIN
  47.     SELECT denumire_departament, AVG(salariul) SAL_MEDIU INTO V_DEN, V_SAL
  48.     FROM angajati a join departamente d
  49.     ON a.id_departament=d.id_departament
  50.     GROUP BY denumire_departament
  51.     HAVING AVG(salariul)=(SELECT MAX(AVG(salariul)) FROM angajati GROUP BY id_departament)
  52.     ORDER BY sal_mediu DESC;
  53. END;
  54. /
  55. --IMI DA EROARE,  TREBUIE SA LE PUN INTR O VARIABILA
  56.  
  57. SET SERVEROUTPUT ON;--TREBUIE SA PUN ASTA CA SA PERMITA EXECUTAREA LUI DBMS_OUTPUT.....
  58. DECLARE
  59. V_DEN VARCHAR2(50);
  60. V_SAL NUMBER;
  61. BEGIN
  62.     SELECT denumire_departament, AVG(salariul) SAL_MEDIU INTO V_DEN, V_SAL
  63.     FROM angajati a join departamente d
  64.     ON a.id_departament=d.id_departament
  65.     GROUP BY denumire_departament
  66.     HAVING AVG(salariul)=(SELECT MAX(AVG(salariul)) FROM angajati GROUP BY id_departament)
  67.     ORDER BY 2 DESC;
  68.     DBMS_OUTPUT.PUT_LINE('DEPARTAMENTUL' ||V_DEN||'ARE SAL MEDIU DE '||V_SAL);
  69. END;
  70. /
  71.  
  72. --EXCEPTIE
  73.  
  74. SET SERVEROUTPUT ON;
  75. DECLARE
  76. V_DEN VARCHAR2(2);
  77. V_SAL NUMBER;
  78. BEGIN
  79.    V_DEN:='ABC'
  80. ;    SELECT denumire_departament, AVG(salariul) SAL_MEDIU INTO V_DEN, V_SAL
  81.     FROM angajati a join departamente d
  82.     ON a.id_departament=d.id_departament
  83.     GROUP BY denumire_departament
  84.     --having avg(salariul)=(select max(avg(salariul)) from angajati group by id_departament)
  85.     ORDER BY 2 DESC;
  86.     DBMS_OUTPUT.PUT_LINE('DEPARTAMENTUL' ||V_DEN||'ARE SAL MEDIU DE '||V_SAL);
  87.    
  88.  EXCEPTION
  89.  WHEN VALUE_ERROR THEN
  90.    DBMS_OUTPUT.PUT_LINE('VALOARE PREA MARE PENTRU VARIABILA RESPECTIVA');
  91.    WHEN TOO_MANY_ROWS THEN--UN FEL DE ELSE
  92.     DBMS_OUTPUT.put_line('PREA MULTE RANDURI RETURNATE');
  93.     WHEN OTHERS THEN
  94.     DBMS_OUTPUT.PUT_LINE('A APARUT O EXCEPTIE '||SQLERRM);  
  95. END;
  96. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement