<서브쿼리 - 단일행>
-
서브 쿼리 (Sub Query): 하나의 SQL문에 포함되어 있는 또 다른 SQL문으로 메인 쿼리(main query)보다 더 먼저 실행됨
-
단일행 서브 쿼리: SELECT문에서 오직 하나의 행만 반환하는 쿼리. 단일 행 연산자(=,>,>=,<,<=,<>,!=)
-
다중행 서브 쿼리: 하나 이상의 행을 반환하는 서브쿼리. 단일행 연산자를 사용하지 못하며, 다중행 연산자(IN, NOT IN, ANY, ALL, EXISTS)만 사용가능
-
다중열 서브 쿼리: 결과 값이 두 개 이상의 컬럼을 반환하는 쿼리.
-
그룹함수를 서브쿼리로 이용
-
employees 테이블에서 가장 높은 급여를 받는 직원 정보를 출력
1
2
3
|
SELECT *
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);
|
cs |
<서브쿼리 예제>
-
Abel 직원보다 급여를 더 많이 받는 직원의 employee_id, last_name, salary 출력
-
Abel의 급여 확인
1
2
3
|
SELECT salary
FROM employees
WHERE last_name = 'Abel';
|
cs |
-
서브쿼리를 사용
1
2
3
4
5
|
SELECT employee_id, last_name, salary
FROM employees
WHERE salary > (SELECT salary
FROM employees
WHERE last_name = 'Abel');
|
cs |
-
'Bull'이란 last_name을 가진 사원의 부서에서 Bull보다 높은 급여를 받는 사원들을 출력
1
2
3
4
5
6
7
8
9
|
SELECT employee_id 직원번호, last_name 이름,
department_id 부서번호, salary 급여
FROM employees
WHERE department_id = (SELECT department_id
FROM employees
WHERE last_name = 'Bull')
AND salary > (SELECT salary
FROM employees
WHERE last_name = 'Bull');
|
cs |
-
'Russell'이란 last_name의 직원번호를 manager_id로 가지는 직원들의 last_name, salary, manager_id를 출력
1
2
3
4
5
|
SELECT last_name, salary, manager_id
FROM employees
WHERE manager_id = (SELECT employee_id
FROM employees
WHERE last_name = 'Russell');
|
cs |
-
jobs테이블에 job_title이 'Stock Manager'의 job_id를 가진 직원들의 정보를 employees 테이블에서 찾아서 출력
1
2
3
4
5
|
SELECT *
FROM employees
WHERE job_id = (SELECT job_id
FROM jobs
WHERE job_title='Stock Manager');
|
cs |
'Learning > SQL' 카테고리의 다른 글
서브쿼리 - 다중열 (0) | 2020.06.18 |
---|---|
서브쿼리 - 다중행 (0) | 2020.06.18 |
조인 (JOIN) - 리뷰 및 예제 (0) | 2020.06.18 |
조인 (JOIN) - 교차조인 (0) | 2020.06.18 |
조인 (JOIN) - 외부조인 (0) | 2020.06.18 |