본문 바로가기
  • Let's study
데이터베이스/Oracle

[Oracle] Sub Query

by 코딩고수이고파 2022. 4. 18.

Sub Query(서브 질의)

  • 하나의 SQL문에 중첩된 SELECT문
  • 주 질의 이전에 먼저 실행됨
  • 서브 질의의 결과는 주 질의에 사용됨

 

Single Row(단일 행)

  • 오직 하나의 행을 반환하는 서브 질의(조건에 들어가는 SELECT문이 하나의 Record만 반환해야함)
  • 단일 행 연산자(=, >, >=, <, <=, <>, !=)만 사용 가능

EX)

'SMITH'와 같은 직위를 같는 사원의 이름과 사원 번호, 업무를 출력하시오.

 

Multiple Rows(다중 행)

  • 하나 이상의 행을 반환하는 서브 질의(조건에 들어가는 SELECT문이 여러 Record를 반환함)
  • 복수 행 연산자(IN, NOT IN, ANY, ALL, EXISTS) 사용 가능

EX)

1. 부서별로 가장 급여를 많이 받는 사원의 정보

2. 30번 부서의 최소 급여를 받는 사원보다 많은 급여를 받는 사원의 사원 번호, 사원 이름, 급여, 업무를 출력하시오(단, 30번은 제외)

ANY안에 있는 값들의 최소값보다 큰 값을 모두 반환
>ANY사용은 MIN사용과 결과가 같다

3. 30번 부서의 최고 급여를 받는 사원보다 많은 급여를 받는 사원의 사원 번호, 사원 이름, 급여, 업무를 출력하시오(단, 30번은 제외)

ALL 안에 있는 값들의 최대값보다 큰 값을 모두 반환(MAX 사용과 동일)

 

Multiple Columns(다중 열)

  • 두 개 이상의 컬럼을 반환하는 서브 질의

EX)

1. 급여와 보너스가 부서 30에 있는 어떤 사원의 보너스와 급여에 일치하는 사원의 사원 번호, 사원 이름, 급여, 보너스를 출력하시오

NVL(column, val)은 column의 record 값이 null이면 val으로 출력한다.

2. 업무별로 최소 급여를 받는 사원의 사원 번호, 사원 이름, 업무, 부서 번호를 출력하시오

GROUP BY: job컬럼을 그룹화(같은 값끼리 묶기)

 

'데이터베이스 > Oracle' 카테고리의 다른 글

[Oracle] 날짜 처리 함수  (0) 2022.04.23
[Oracle] 숫자 처리 함수  (0) 2022.04.22
[Oracle] 문자 처리 함수  (0) 2022.04.21
[Oracle] Integrity Constraints(데이터 무결성 제약조건)  (0) 2022.04.19
[Oracle] Join  (0) 2022.04.17

댓글