Advertisement
rainman226

BD1_LAB6

Nov 9th, 2022 (edited)
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.05 KB | None | 0 0
  1. /* lab 5.a */
  2. SELECT COUNT(*) "TOTAL",
  3. COUNT(CASE WHEN to_char(hiredate,'yyyy')='1980' THEN empno ELSE NULL END) "1980",
  4. COUNT(CASE to_char(hiredate,'yyyy') WHEN '1981' THEN empno ELSE NULL END) "1981",
  5. COUNT(CASE to_char(hiredate,'yyyy') WHEN '1982' THEN empno END) "1982",
  6. COUNT(decode (to_char(hiredate,'yyyy'), '1983', empno, NULL)) "1983",
  7. SUM(decode (to_char(hiredate,'yyyy'), '1984', 1, 0)) "1984"
  8. FROM emp
  9.  
  10. SELECT job, SUM(sal) AS "Total",
  11. SUM(CASE WHEN deptno = 10 THEN sal ELSE 0 END) AS "Dept. 10",
  12. SUM(decode(deptno, 20, sal, 0)) AS "Dept. 20",
  13. SUM(decode(deptno, 30, sal, 0)) AS "Dept. 30"
  14. FROM emp GROUP BY job ORDER BY job
  15. /* lav 6 */
  16. /* 1.cross join
  17. - afis. nume ang si nume departament */
  18.  
  19. SELECT ename, dname
  20. FROM emp,dept
  21.  
  22. SELECT ename, dname
  23. FROM emp CROSS JOIN dept
  24.  
  25. /* 2.equijoin (inner join) */
  26.  
  27. SELECT ename, dname, emp.deptno
  28. FROM emp, dept
  29. WHERE emp.deptno=dept.deptno
  30.  
  31. SELECT ename, dname
  32. FROM emp JOIN dept
  33. ON emp.deptno=dept.deptno
  34.  
  35. SELECT ename, dname
  36. FROM emp JOIN dept USING(deptno)
  37.  
  38. SELECT ename, dname
  39. FROM emp NATURAL JOIN dept
  40.  
  41. /* 3. non equijoin
  42. - afis nume angajat si grupa de salarizare a fiecarui angajat uwu */
  43.  
  44. SELECT ename, grade, sal, losal, hisal
  45. FROM emp, salgrade
  46. WHERE sal BETWEEN losal AND hisal
  47.  
  48. SELECT ename, grade, sal, losal, hisal
  49. FROM emp JOIN salgrade
  50. ON sal BETWEEN losal AND hisal
  51.  
  52. /* 4. self-join
  53. afisare nume angajat si numele sefului direct*/
  54. SELECT ang.ename "nume ang.", sefi.ename "Nume sef"
  55. FROM emp ang, emp sefi
  56. WHERE ang.mgr=sefi.empno
  57.  
  58. SELECT ang.ename "nume ang.", sefi.ename "Nume sef"
  59. FROM emp ang JOIN emp sefi
  60. ON ang.mgr=sefi.empno
  61.  
  62. /* 5. outer join (left,right,full) */
  63.  
  64. SELECT ang.ename "nume ang.", sefi.ename "Nume sef"
  65. FROM emp ang, emp sefi
  66. WHERE ang.mgr=sefi.empno(+)
  67.  
  68. SELECT ang.ename "nume ang.", sefi.ename "Nume sef"
  69. FROM emp ang LEFT JOIN emp sefi
  70. ON ang.mgr=sefi.empno
  71.  
  72. SELECT ename, dname, emp.deptno
  73. FROM emp, dept
  74. WHERE emp.deptno(+)=dept.deptno
  75.  
  76. SELECT ename, dname
  77. FROM emp RIGHT JOIN dept
  78. ON emp.deptno=dept.deptno
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement