FROM절 안에서 사용된 SUBQUERY를 우리는 INNER VIEW라고 한다.
INNER VIEW에서 도출된 결과 값을 바탕으로 우리는 쿼리를 좀 더 다양하게 작성할 수 있다.
자신이 속한 부서의 평균 연봉보다 더 많이 받는 사원의 데이터를 출력하시오.
select e.*
from hr.employees e,(
select department_id , avg(salary) as avg_sal
from hr.employees
group by department_id) t
where e.department_id = t.department_id and e.salary > avg_sal;
우리는 앞전의 CORELATED SUBQUERY를 공부하며 같은 문제를 다음과 같이 풀어보았었다.
select *
from hr.employees e
where salary > (
select avg(salary)
from hr.employees
where department_id = e.department_id
);
서브쿼리를 사용하면 일반적으로 oracle은 서브쿼리의 내용을 조인으로 표현하려고 한다. 왜냐하면 서브쿼리의 종속성을 오라클이 싫어하기 때문이다.
하지만, 조인을 사용하게 될 경우 1쪽과 M쪽 집합에서 M을 기준으로 결과가 생성되기 때문에 결과를 도출할 때 이러한 점을 주의해서 사용해야 한다.