다중행 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학년 학생들의 가장 적게 나가는 체중보다
더 적게 나가는 학생의 이름과 학년 몸무게를 출력하시오
위와 같은 문제지만 방식을 다르게 사용하여 < MIN 을 사용한다.
문제 2)
emp2 테이블을 사용하여 전체 직원 중 'Section head' 직급의 최소 연봉자보다
연봉이 높은 사람의 이름과 직급, 연봉을 출력하시오
(단, 연봉 출력 형식은 천 단위 구분 기호와 $ 표시를 하라)
TO_CHAR(pay, '$999,999') 를 통해 pay의 출력값을 천 단위로 나누며 앞에 $기호를 붙인다
MIN(pay) 는 최소 연봉을 나타낸다.
즉 EMP2 테이블의 Section head 직급의 최소연봉보다 작은 연봉을 출력한다.
문제 3)
emp2 테이블과 dept2 테이블을 조회하여 각 부서별 평균 연봉을 구하고 그중에서 평균 연봉이
가장 적은 부서의 평균 연봉보다 적게 받는 직원들의 부서명, 직원, 연봉을 출력하라
'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) MAX/MIN 함수, RANK 함수 (0) | 2018.05.04 |
Oracle) DECODE 함수 , TO_CHAR 함수 , CASE문 (0) | 2018.04.09 |