코드 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)를 구합니다.