Sample -3 JOIN
가장 오래 근무한 직원 10명의 현재부서의 이름을 출력하시오
SELECT E.EMP_NO, E.FIRST_NAME, D.DEPT_NAME FROM DEPT_EMP DE INNER JOIN EMPLOYEES E ON E.EMP_NO = DE.EMP_NO INNER JOIN DEPARTMENTS D ON D.DEPT_NO = DE.DEPT_NO WHERE DE.TO_DATE='9999-01-01' ORDER BY HIRE_DATE DESC LIMIT 10;
부서별로 직원 수를 구하되 부서 이름이 출력되게 하시오
SELECT DEPT_NAME, COUNT(*) FROM DEPT_EMP DE INNER JOIN DEPARTMENTS D D.DEPT_NO = DE.DEPT_NO WHERE DE.TO_DATE='9999-01-01' GROUP BY DEPT_NAME ORDER BY COUNT(*)
이 경우 서브쿼리를 사용하는 것이 더 효율적일 수 있다. (서브쿼리는 다음 샘플에서 비교한다.)
급여 평균이 가장 높은 부서 5개를 출력하시오
SELECT DEPT_NO , AVG(SALARY) SA FROM DEPT_EMP DE INNER JOIN SALARIES SAL ON DE.EMP_NO = SAL.EMP_NO WHERE DE.TO_DATE='9999-01-01' AND SAL.TO_DATE='9999-01-01' GROUP BY DEPT_NO ORDER BY SA DESC LIMIT 5
from에 어떤 테이블을 선택할건지에 대한 고민을 해야하며, where절에 조건이 2개가 온다는 것 그래야 작업 속도가 향상된다(비교횟수 감소)