728x90
사용한 데이터 테이블 구조
개념 정리에 들어갈 코드 예시에 테이블 구조는 아래와 같다.
- 사원 정보를 저장하고 있는
EMP
테이블
emp_id | name | job | sal | dept_id |
1 | Alice | CLERK | 2500 | 10 |
2 | Bob | MANAGER | 4000 | 10 |
3 | Charlie | CLERK | 2000 | 20 |
4 | Dave | SALESMAN | 3000 | 30 |
5 | Eva | MANAGER | 5000 | 20 |
6 | Frank | ANALYST | 2700 | 30 |
- 부서 정보를 저장하고 있는
DEPT
테이블
dept_id | dept_name | location |
10 | HR | SEOUL |
20 | IT | BUSAN |
30 | SALES | DAEGU |
단일 행 서브쿼리란?
서브쿼리의 결과가 1개의 행으로만 나오게 되는것이 단일 행이다.
- 주로
=
,>
,<
,>=
,<=
,!=
와 같은 비교 연산자를 사용한다. - 반드시 1개의 결과만 반환되어야 한다.
전체 평균 급여보다 높은 급여를 받는 사원 조회하려면 아래와 같이 작성하면 된다.
SELECT name, sal
FROM emp
WHERE sal > (
SELECT AVG(sal)
FROM emp
);
- 결과
name | sal |
Bob | 4000 |
Eva | 5000 |
다중 행 서브쿼리란?
서브쿼리의 결과가 여러 개의 행으로 나오게 되는것이 다중 행이다.
- 주로
IN
,NOT
IN
,ANY
,ALL
,EXISTS
와 같은 연산자를 사용한다.
IT 부서(20번 부서)와 동일한 급여를 받는 사원을 조회하려면 아래와 같이 작성하면 된다.
SELECT name, sal
FROM emp
WHERE sal IN (
SELECT sal
FROM emp
WHERE dept_id = 20
);
- 결과
name | sal |
Charlie | 2000 |
Eva | 5000 |
다중 열 서브쿼리란?
서브쿼리의 결과가 2개 이상의 컬럼(열)을 반환한다.
- 주로
IN
,= ANY
,EXISTS
와 같은 연산자를 사용한다.
(부서 ID, 직무) 조합이 부서 10번의 조합과 같은 사원을 찾으려면 아래와 같이 작성하면 된다.
SELECT name, dept_id, job
FROM emp
WHERE (dept_id, job) IN (
SELECT dept_id, job
FROM emp
WHERE dept_id = 10
);
- 결과
name | dept_id | job |
Alice | 10 | CLERK |
Bob | 10 | MANAGER |
728x90
'DB' 카테고리의 다른 글
[DB] SQL - 상호 연관 서브쿼리란? (0) | 2025.04.02 |
---|---|
[DB] SQL - 서브 쿼리를 이용한 동적 쿼리 활용 방법 (0) | 2025.04.02 |
[DB] SQL - 서브쿼리 개념 정리 (0) | 2025.04.01 |
[DB] SQL - JOIN에 사용되는 조건절(USING, ON)에 대해 알아보자. (0) | 2025.03.31 |
[DB] SQL - 조인(JOIN)이란? (0) | 2025.03.31 |