본문 바로가기
자격증/패스트 캠퍼스 데이터베이스와 SQLD 합격패스 Online

패스트 캠퍼스 챌린지 19일차 데이터베이스와 SQLD 합격패스 Online

by 리드민 2021. 9. 24.
반응형

Ch 05. SQL 기본 - 04. 서브쿼리

(1) 서브 쿼리 기본

SELECT
       MAX(LIST_PRICE)
  FROM PRODUCTS
 ;

- LIST_PRICE의 최대값을 구함

SELECT
   PRODUCT_ID
 , PRODUCT_NAME
 , LIST_PRICE
  FROM PRODUCTS
 WHERE LIST_PRICE = 8867.99
 ;

- LIST_PRICE가 8867.99 인 행을 출력

SELECT
       PRODUCT_ID
     , PRODUCT_NAME
     , LIST_PRICE
  FROM PRODUCTS
 WHERE LIST_PRICE = (
                   SELECT
                          MAX(LIST_PRICE)
                     FROM PRODUCTS
                    );

- LIST_PRICE가 최대값인 행을 출력
- 서브 쿼리를 이용하여 단 한 개의 SQL문으로 출력을 완료함

(2) 스칼라 서브 쿼리

SELECT
       A.PRODUCT_NAME
     , A.LIST_PRICE
     , ROUND( (SELECT AVG(K.LIST_PRICE) 
                 FROM PRODUCTS K 
               WHERE K.CATEGORY_ID = A.CATEGORY_ID 
            ), 2
       ) AVG_LIST_PRICE
  FROM PRODUCTS A
ORDER BY A.PRODUCT_NAME;

- 각 제품의 가격을 구하면서 해당 제품이 위치하고 있는 제품 카테고리의 평균 가격도 같이 구함
- 이러한 방식으로 SELECT절 내에 사용하는 서브 쿼리를 스칼라 서브 쿼리라고 함

[] 서브 쿼리

(3) 인라인 뷰 서브 쿼리

SELECT ORDER_ID
     , ORDER_VALUE
  FROM
(
    SELECT ORDER_ID
         , SUM( QUANTITY * UNIT_PRICE ) ORDER_VALUE
      FROM ORDER_ITEMS
     GROUP BY ORDER_ID
     ORDER BY ORDER_VALUE DESC 
)
WHERE ROWNUM <= 10;

- 제품의 단위 가격과 수량을 곱한 값을 ORDER_VALUE라고 한다.

- ORDER_VALUE 값을 기준으로 내림차순 정렬한다. 
- WHERE ROWNUM 조건으로 정렬된 값 중에서 상위 10건을 뽑는다.
- FROM 절에 사용되는 SELECT문을 인라인 뷰라고 부른다. 
- 인라인 뷰는 서브 쿼리의 종류 중 하나이며 인라인 뷰 서브 쿼리라고도 부른다. 

반응형