티스토리 뷰

Database/Oracle

[Oracle] 서브쿼리

best 2016. 2. 16. 15:27

서브쿼리 : 쿼리 안의 쿼리

 

  1. 조회하려는 대상을 알지 못할 때
  2. 조회하려는 대상이 너무 많을 때
  3. 조회하려는 대상이 유동적일 때 사용한다.

 

SELECT [COLUMN], [SUB QUERY]

FROM    [TABLE]

WHERE   [COLUMN OPER SUBQUERY]

 

WHERE 안에 서브쿼리를 만드는 실습들

 

실습1 - SALARY가 최소인 사원을 조회하고 싶을 때

 

1
2
3
4
5
6
7
SELECT  *
FROM    EMPLOYEES
WHERE   SALARY = (
                    SELECT MIN(SALARY)
                    FROM   EMPLOYEES
)
;
cs

 

결과가 하나일때는 WHERE 절에서 = 를 쓰지만, 여러 개의 결과를 얻고 싶을 땐 IN을 써서 조건을 만든다.

 

 

 

실습2 - 평균 연봉의 +- 500인 사원들을 조회한다.

 

1
2
3
4
5
6
7
8
9
10
11
SELECT  *
FROM    EMPLOYEES
WHERE   SALARY > (
                    SELECT AVG(SALARY) - 500
                    FROM   EMPLOYEES
)
AND     SALARY < (
                    SELECT AVG(SALARY) + 500
                    FROM   EMPLOYEES
)
;
cs

 

 

 

실습3 - 회사 전체 평균 연봉 보다 더 버는 사원들 중 LAST_NAME 에 u 가 있는 사원들이

근무하는 부서에서 근무하는 사원들의 사번, LAST_NAME 및 연봉을 조회한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT  EMPLOYEE_ID
        , LAST_NAME
        , SALARY
FROM    EMPLOYEES
WHERE   DEPARTMENT_ID IN ( -- 결과가 여러개 이므로 IN을 사용한다.
                          SELECT  DEPARTMENT_ID
                          FROM    EMPLOYEES
                          WHERE   LAST_NAME LIKE '%u%'
                          AND     SALARY > (
                                            SELECT  AVG(SALARY)
                                            FROM    EMPLOYEES
                          )
)
;
cs

 

서브쿼리 안의 서브쿼리

 

 

 

 

SELECT절 안에서 서브쿼리 만드는 경우

그 서브쿼리의 결과가 하나이어야 한다는 제약조건이 존재한다.

 

 

실습1

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT  DEPARTMENT_ID
        , LAST_NAME
        , (
            SELECT SUM(SALARY)
            FROM   EMPLOYEES
            WHERE  DEPARTMENT_ID = 40 -- 이부분의 결과가 하나여야한다.
           )
FROM    EMPLOYEES
WHERE   LAST_NAME LIKE '%u%'
AND     SALARY > (
                  SELECT  AVG(SALARY)
                  FROM    EMPLOYEES
)
;
cs
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함