서브쿼리 : SELECT 문 안에 있는 SELECT 문

Jane의 study note.·2022년 12월 2일
0

SQL (Oracle)

목록 보기
6/11

7장 서브쿼리 : SELECT 문 안에 있는 SELECT 문
SELECT문 안에서 보조로 사용되는 또 다른 SELECT문
서브쿼리는 SELECT문을 효과적으로 작성할 수 있도록 도와준다.
복잡한 SELECT문을 작성할 때 거의 필수로 사용되는 기법
중첩된 쿼리(nested query)

01 서브쿼리란?

02 단일 행 서브쿼리

[예제 7-1]HR.employees 테이블의 last_name이 De Haan인 직원과 salary가 동일한 직원에는 누가
있는지 단일 행 서브쿼리를 이용해서 출력해 보세요.

SELECT *
FROM employees A
WHERE A.salary = (
SELECT salary
FROM employees
WHERE last_name = 'De Haan'
);
=> De Haan의 salary는 17000으로 단일 행

P171~172, 전달 결과가 다중행 일때 단일 행 연산자를 사용할 때 나타나는 오류
SELECT *
FROM employees A
WHERE A.salary = (
SELECT salary
FROM employees
WHERE last_name = 'Taylor'
);


03 다중 행 서브쿼리

p173 다중 행 연산자5

[예제 7-2]HR.employees 테이블에서 department_id별로 가장 낮은 salary가 얼마인지 찾아보고
찾아낸 salary의 직원이 누구인지 다중 행 서브쿼리를 이용해 찾아보세요.

SELECT *
FROM HR.employees A
WHERE A.salary IN (
SELECT MIN(salary) 최저급여
FROM employees
GROUP BY department_id
)
ORDER BY A.salary DESC;


04 다중 열 서브쿼리

p175

[예제 7-3]HR.employees 테이블에서 department_id별로 가장 낮은 salary가 얼마인지 찾아보고
찾아낸 salary의 직원이 누구인지 다중 열 서브쿼리를 이용해 찾아보세요.

SELECT *
FROM HR.employees A
WHERE (A.job_id, A.salary) IN (
SELECT job_id, MIN(salary) 그룹별급여
FROM HR.employees
GROUP BY job_id
)
ORDER BY A.salary DESC;


05 FROM 절 서브쿼리 : 인라인 뷰

p177
[예제 7-4]직원 중에서 department_name이 IT인 직원의 정보를 인라인 뷰를 이용해 출력해 보세요.

SELECT *
FROM employees A,
( SELECT department_id
FROM departments
WHERE department_name = 'IT') B
WHERE A.department_id = B.department_id;

0개의 댓글