본문 바로가기

프로그래밍/오라클

[ORACLE] 오라클 _ 상관관계 서브쿼리 ( Correlated Subquery )

[ORACLE] 오라클 _ 상관관계 서브쿼리 ( Correlated Subquery )




상관관계 서브쿼리    ||    Correlated Subquery
바깥쪽 쿼리의 컬럼 중에 하나가 안쪽 서브쿼리의 조건에 이용! 
그 결과는 다시 바깥쪽 쿼리에 영향을 준다. 이러한 쿼리를 상관관계 서브쿼리라 한다.


예제1. 장바구니 table에서 회원별 최고의 구매수량을 가진 회원, 주문번호, 상품수량에 대해 모두 검색하시오.
(alias는 회원, 주문번호, 상품, 수량)









예제2. 입고테이블(buyprod) "상품별" 최고 매입수량을 가진 자료의 입고일자, 상품코드, 매입수량, 매입단가를 검색하여라.

아래의 예제를 보면, 하나의 테이블을 가지고 alias를 다르게 부여하여 서로 다른 테이블인양 테스트를 하고 있음을 알 수 있다. 





예제3. 장바구니테이블(cart)에서 "상품별" 최고 판매수량을 갖는 자료의 주문번호, 상품코드, 회원ID, 회원명, 회원별 최고판매수량을 검색하여라. (회원명은 서브쿼리로 처리할 것)






예제4. 거래처의 2005년도 거래처별 매입금액 합계를  조회하라.


다양한 방식을 사용해서 2005년도의 데이터를 추출해보았다. 
1) substr을 활용해 05년도 인 것만 추출
2) like를 활용해 05년도로 시작하는 날짜만 추출합니다.
3) between을 활용해 말그대로 1/1~12/31 까지를 추출합니다.
4) extract를 활용해 년도가 2005년인 것만 추출합니다.






예제5. 모든 거래처의 2005년도 거래처별 매입금액 합계를 조회하여라.
(alias : 거래처코드, 거래처명, 매입금액합계)






예제6. 모든 거래처의 2005년도 거래처별 매입금액합계, 매출금액합계를 검색하시오. 
(alias는 거래처코드, 거래처명, 매출금액합계, 거래처명 순)