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개가 온다는 것 그래야 작업 속도가 향상된다(비교횟수 감소)

results matching ""

    No results matching ""