더북(TheBook)

코드 9-12

SELECT a.dept_no, a.dept_name,
       COUNT(*) cnt, SUM(c.salary) salary, AVG(c.salary) dept_avg
  FROM departments a, dept_emp b, salaries c
 WHERE a.dept_no = b.dept_no
   AND b.emp_no = c.emp_no
   AND SYSDATE() BETWEEN b.from_date AND b.to_date
   AND SYSDATE() BETWEEN c.from_date AND c.to_date
 GROUP BY a.dept_no, a.dept_name
 ORDER BY 1;

실행결과

코드 9-12를 보면 departments, dept_emp, salaries 테이블을 조인합니다. 현재 시점 기준으로 각 부서에 속한 사원의 급여를 조회하도록 dept_emp와 salaries 테이블에서 현재 날짜가 from_date와 to_date 칼럼 값 사이에 있는 건만 조회하는 조건을 줍니다. 그리고 부서 번호와 부서명을 GROUP BY 절에 명시하고 COUNT(), SUM(), AVG() 함수로 부서별 총 사원 수(*), 총 급여(c.salary), 평균 급여(c.salary)를 구합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.