[Oracle] 20.서브쿼리
서브쿼리
SECELT문에 SECELT문을 추가할 수 있습니다!
이를 서브쿼리문이라고 합니다~!
예제를 통해 확인해보죠!
예제
- 사원번호, 사원명, 매니저번호, 매니저명 서브쿼리 이용해 조회
SELECT
employee_id "사원번호",
first_name|| ' '|| last_name "사원명",
manager_id "상사번호",
(
SELECT
first_name || last_name
FROM
employees m
WHERE
e.manager_id = m.employee_id
) "상사명"
FROM
employees e;
- Adam과 같은 부서에 근무하는 사원의 이름 조회
SELECT
first_name "이름"
FROM
employees
WHERE
department_id = (
SELECT
department_id
FROM
employees
WHERE
first_name = 'Adam'
);
- 직급이 Manager 인 사원 사원명과 부서번호, job_id 조회
SELECT
employees.first_name|| ' '|| employees.last_name "사원명",
department_id "부서번호",
job_id
FROM
employees
WHERE
employees.department_id IN (
SELECT
department_id
FROM
departments
WHERE
job_id IN (
SELECT
job_id
FROM
jobs
WHERE
upper(job_title) LIKE '%MANAGER'
)
);
- Chen의 급여와 동일하거나 더 많이 받는 사원명과 급여를 조회
SELECT
first_name|| ' '|| last_name "이름",
TO_CHAR(salary,'999,999,999')|| '원' "급여"
FROM
employees
WHERE
salary >= (
SELECT
salary
FROM
employees
WHERE
last_name = 'Chen'
);
- 2005년 이후 입사한 사원중 대표이사를 제외한 전체 사원의 평균 급여보다 많이 받는 사원조회
select
first_name||' '||last_name "사원명", salary "급여"
from
employees
where
salary > (
select
round(avg(salary))
from
employees
where
manager_id is not null
and
to_char(hire_date, 'yyyy') > 2005
);