Oracle) 다중행 Sub Query
본문 바로가기

Data Base

Oracle) 다중행 Sub Query

반응형

다중행 Sub Query (Multi Row Sub Query) 란?

 

Sub Query의 결과가 2건 이상 출력되는 것을 말한다.

결과가 여러개 출력되기 때문에 단일행 연산자(<,>,=)를 사용할 수 없다

다중행에서 사용하는 연산자는 따로 있다

 

 

IN         : 서브 쿼리 결과와 같은 값을 찾는다

EXISTS   : Sub Query의 값이 있을 경우 메인 쿼리를 수행한다.

>ANY    : 서브 쿼리 결과 중에서 최솟값을 반환.  (  >MIN  과 같다)

<ANY    : 서브 쿼리 결과 중에서 최댓값을 반환   (  <MAX 과 같다)

<ALL     : 서브 쿼리 결과 중에서 최솟값을 반환   (  <MIN 과 같다)

>ALL     : 서브 쿼리 결과 중에서 최댓값을 반환   (  >MAX과 같다)

 

주의할 점은 IN 은 ' = ' 와 같은 역할을 하지만 IN 대신 = 를 사용할 순 없다.

 

문제 1)

Student 테이블을 조회하고 전체 학생중에서 2학년 학생들의 가장 적게 나가는 체중보다

더 적게 나가는 학생의 이름과 학년 몸무게를 출력하시오

 

[그림 1] 서브 쿼리 결과 비교

위와 같은 문제지만 방식을 다르게 사용하여 < MIN 을 사용한다.

[그림 2] MIN 함수 이용

 

 

문제 2)

emp2 테이블을 사용하여 전체 직원 중 'Section head' 직급의 최소 연봉자보다

연봉이 높은 사람의 이름과 직급, 연봉을 출력하시오

(단, 연봉 출력 형식은 천 단위 구분 기호와 $ 표시를 하라)

 

[그림 3] MIN 함수를 이용 (2)

 

TO_CHAR(pay, '$999,999') 를 통해 pay의 출력값을 천 단위로 나누며 앞에 $기호를 붙인다

MIN(pay) 는 최소 연봉을 나타낸다.

즉 EMP2 테이블의 Section head 직급의 최소연봉보다 작은 연봉을 출력한다.

 

 

문제 3)

emp2 테이블과 dept2 테이블을 조회하여 각 부서별 평균 연봉을 구하고 그중에서 평균 연봉이

가장 적은 부서의 평균 연봉보다 적게 받는 직원들의 부서명, 직원, 연봉을 출력하라

 

[그림 4] 다중 쿼리 결과값

 

 

 

 

반응형

'Data Base' 카테고리의 다른 글

Oracle) PL/SQL Cursor(커서)  (0) 2018.07.11
Oracle) PL/SQL 개념  (0) 2018.07.10
Oracle) 다중행 Sub Query  (0) 2018.05.04
Oracle) 단일행 Sub Query  (0) 2018.05.04
Oracle) MAX/MIN 함수, RANK 함수  (0) 2018.05.04
Oracle) DECODE 함수 , TO_CHAR 함수 , CASE문  (0) 2018.04.09