1) Having절 서브쿼리 : Having절에서 사용

 

 ※문제) 부서별 월급합계의 평균보다 높은 월급합계를 가지는 부서의 부서명과 월급합계를 출력

① From절 서브쿼리와, Where절 서브쿼리를 사용

 

 

 

>> 부서별 급여합계의 평균인 57618 보다 큰 부서명과 월급합계가 출력된다.

 

 

② Having절 서브쿼리 사용

 

 

>> Group by의 조건절인 Having절에 서브쿼리를 사용한 결과와

    From절, Where절 서브쿼리를 사용한 결과가 같다.

 

 

 

2) 계층형 쿼리

 

① 계층형 쿼리 >> Hierarchy (계층구조)
    Root(뿌리) -> 제일 꼭대기

Branch(가지) -> 말단이 아닌 Node

leaf(잎) -> 말단인 Node

 

② Connect By

 

 

 

 

 

 

 

블로그 이미지

모데스티

,

1) 복수컬럼 서브쿼리 : Where절에서 사용

복수컬럼 서브쿼리

 

 

>> salary와 hire_date가 같은 사람이 없기 때문에 결과가 나오지 않는다. 

 

2) 상관 서브쿼리 : Select 절에서 사용

① 상관 서브쿼리 >> join을 쓰지 않거나, 못 쓰는 경우

ex) group by를 쓰는 경우

 

>> Select절에서 다른 Select절을 사용한다.

 

② 상관 서브쿼리 예제 

 

>> select절에서 다른 select절을 써서 출력할 수 있다.

 

 

 

블로그 이미지

모데스티

,

1) 복수행 서브쿼리 : Where절에서 사용

 

※ 복수행 서브쿼리의 연산자

   ⓐ all : 모두

   ⓑ any : 어떤 것 중에 하나

   ⓒ in : 중에 하나라도 같다 (= any)

   ⓓ exists : 존재유무

 

① all 

 

>> 첫 번째 실행결과 : 하나의 salary의 값과 부서번호가 60인 모든 사람들의 salary를 비교할 수 없다.

 

>> 두 번째 실행결과: all을 써줄경우 정상적으로 실행된다.

 

② in

>> 실행결과 : 부서번호가 80번인 사원을 제외한 나머지 사원들 중 80번 부서 사원과 같은 월급을 받는 사람들이 출력된다.

 

③ not in

>> 실행결과 : 80번 부서 사원들과 다른 월급을 받는 사원들 모두가 출력된다.

 

④ exists 

>> 실행결과 : 월급이 20000이 초과되는 사원의 모든 내용이 출력된다.

 

 

 

 

블로그 이미지

모데스티

,