Oracle Sub Query란? (11)



oSub Query란?
-Select 문장의 절에 포함된 Select문장이다.
-Where 절의 Sub Query는 비교 대상의 값이 미지정일 경우 사용 된다.
-From 절의 Sub Query는 Sub Query의 결과 집합(Result Set)을 하나의 View로 간주한다.

o유형
-단일 행의 결과로 하나의 행이 리턴 된다.
-다중 행의 결과로 하나의 행이 리턴 된다.
-다중 열의 결과로 하나의 행이 리턴 된다.

o사용 지침
-WHERE 절, HAVING 절, FROM 절에 SUB QUERY를 사용할 수 있다.
-SUB QUERY는 ()로 둘러싸여져야 한다.
-SUB QUERY는 연산자의 오른쪽에 있어야 한다.
-단일 행 SUB QUERY는 단일 행 연산자를  사용 하고
다중 행 SUB QUERY는 다중 행 연산자를 사용 해야한다.


o 왜 써야 하는 가??

Where 조건의 비교대상의 값을 모르는 경우에 서브쿼리로 검색할 수 있다.
존보다 급여를 많이 받는 사원은? 존의 급여를 모를때 그냥 서브쿼리로 select 존 급여를 쿼리 실행한다.

select empno, ename, sal 
FROM emp
where sal >
(select sal from emp where ename= 'jones');

그룹함수의 여부에 따라서 단일 행 함수를 쓸건지, 다중 행 함수를 쓸건지 생각 해야 한다.
두개의 함수를 묶어서 하나의 페어로 묶어서
페어가 완전히 같은 경우만 참으로 보고 결과 검색을 한다.







o Non pairwise column




o        pairwise column




* 데이터는 테이블로 부터 조회를 하는게 아니라
인라인 뷰를 사용할 때는 하나의 집합이라고 생각하고 한다.
두 집합에서 하나의 결과를 합쳐서 보여준다고 생각하자.


select ranking , empno, ename , job , dname , sal
from emp 
where sal > ...
order by max(sal)



미리 서브쿼리에 select한 결과를 다시 select하는데
단 조건을 rownum 의 순서를 매겨서 출력한다. 
그러면 원하는 결과를 얻을 수 있다.




인라인 뷰로 미리 데이터를 솔트(sort)한 뒤에 rownum을 매겨서 출력했다. 
우리가 데이터가 솔트된 결과를 구한 거에 6~10등 인거만 조회하라. 
인라인뷰를 사용할 때는 집합이라는 개념을 염두해두고 사용 하라.





0 comments:

Post a Comment