Advertisement
J-Man18

Baza de date Lab 8

Nov 16th, 2018
586
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. https://drive.google.com/drive/folders/0B6ujXwuml1o8RmhaOHV2TmJkRzA?ogsrc=32
  2.  
  3.         Lab 8
  4.  
  5. -afis nume, ang, sal, dept, sal.mediu al dept IN care lucreaza fiecare ang
  6.     cu subinterogarea corelata;
  7.  
  8. SELECT ename, sal, deptno, (SELECT AVG(sal) FREOM emp b WHERE a.deptno = b.deptno) sal_mediu_dept
  9. FREOM emp a;
  10.    
  11.     cu subinterogare IN clauza FROM/JOIN:
  12.  
  13. SELECT ename, sal, e.deptno, sal_med_dept
  14. FROM emp e, (SELECT deptno, AVG(sal) sal_med_dept FROM emp GROUP BY deptno) d
  15. WHERE e.deptno = e.deptno;
  16.  
  17. 1. "Afişaţi pentru fiecare localitate lista meseriilor şi grupa salarială în care se încadrează salariul mediu al meseriei:"
  18.  
  19. SELECT DISTINCT loc, e.job, grade
  20. FROM emp e, dept d, salgrade s, (SELECT job, AVG(sal) sal_med_job FROM emp GROUP BY job) x
  21. WHERE e.deptno = d.deptno
  22. AND e.job = x.job
  23. AND sal_med_job BETWEEN losal AND hisal;
  24.  
  25. 7. "Numele salariaţilor care prin majorarea salariului cu 20% se încadrează în următoarea grupă salarială celei în care se
  26. aflau înaintea indexării salariului. "
  27.  
  28. SELECT ename, sal, s1.grade, sal * 1.2, s2.grade
  29. FROM emp, salgrade s1, salgrade s2
  30. WHERE sal BETWEEN s1.losal AND s1.hisal
  31. AND sal * 1.2 BETWEEN s2.losal AND s2.hisal
  32. AND s1.grade + 1 = s2.grade;
  33.  
  34. 10. "Numele angajatului, salariul mediu al grupei salariale în care se încadrează salariul său, salariul mediu al meseriei pe
  35. care o practică şi salariul mediu al localităţii în care lucrează pentru toţi angajaţii "
  36.  
  37. SELECT ename, sal_med_gr, sal_med_job, sal_med_loc
  38. FROM emp e, dept d, salgrade s, (SELECT grade, AVG(sal) sal_med_gr FROM emp, salgrade WHERE sal BETWEEN losal AND hisal GROUP BY grade) x,
  39. (SELECT job, AVG(sal) sal_med_job FROM emp emp GROUP BY job) y,
  40. (SELECT loc, AVG(sal) sal_med_loc FROM emp, dept WHERE emp.deptno = dept.deptno GROUP BY loc) z
  41. WHERE e.deptno = d.deptno
  42. AND sal BETWEEN losal AND hisal
  43. AND s.grade = x.grade
  44. AND e.job = y.job
  45. AND d.loc = z.loc;
  46.  
  47. 11. "Situaţia:
  48. Numele angajatului Colegi încadraţi în 1981 Colegi încadraţi 1982 Colegi încadraţi 1982 "
  49.  
  50. SELECT a.ename , SUM(DECODE(TO_CHAR(c.hiredate, 'YYYY')'1981', 1, 0)) "Nr. Colegi 1981"
  51. SUM(CASE WHEN EXTRACT(YEAR FROM c.hiredate) = '1982' THEN 1 ELSE 0 END) "Nr. Colegi 1982"
  52. FROM emp a, emp c
  53. WHERE a.empno != c.empno
  54. AND a.deptno = c.deptno
  55. GROUP BY a.ename;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement