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

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

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

Ch 05. SQL 기본 - 03. VIEW

[] INLINE VIEW

SELECT A.*
  FROM
(

 SELECT
         NAME
       , CREDIT_LIMIT
    FROM CUSTOMERS
) A
;

- SELECT문의 FROM절 내부에 있는 또다른 SELECT문을 인라인 뷰(INLINE VIEW)라고 한다.

SELECT A.*
  FROM
     (
       SELECT A.*
         FROM
            (
SELECT
       NAME
     , CREDIT_LIMIT
  FROM CUSTOMERS 
            ) A
     ) A 
;

- 인라인 뷰 내에 있는 SELECT문의 FROM절에 또다른 인라인 뷰를 넣을 수 도 있다. (인라인 뷰 안에 인라인 뷰 가능) 

 

[] VIEW

(1) 연도별 각 고객의 매출 금액 구하기

SELECT 
       C.NAME AS CUSTOMER
     , TO_CHAR(A.ORDER_DATE, 'YYYY') AS YEAR
     , SUM( B.QUANTITY * B.UNIT_PRICE ) SALES_AMOUNT     
  FROM ORDERS A
     , ORDER_ITEMS B
     , CUSTOMERS C   
 WHERE 1=1 
   AND A.STATUS = 'Shipped'
   AND A.ORDER_ID = B.ORDER_ID 
   AND A.CUSTOMER_ID = C.CUSTOMER_ID 
 GROUP BY C.NAME, TO_CHAR(A.ORDER_DATE, 'YYYY')
 ORDER BY C.NAME
 ;

- 이 SELECT문은  발송된 주문에 대한 연도별 각 고객의 매출 총 금액을 구하는 SQL문이다. 
- 이 정보를 조회 하기 위해서는 위와 같은 SELECT문을 실행해야 한다. 

[] VIEW

(2) 연도별 각 고객의 매출 금액 구하기 뷰 생성

CREATE OR REPLACE VIEW CUSTOMER_SALES AS 
SELECT 
       C.NAME AS CUSTOMER
     , TO_CHAR(A.ORDER_DATE, 'YYYY') AS YEAR
     , SUM( B.QUANTITY * B.UNIT_PRICE ) SALES_AMOUNT     
  FROM ORDERS A
     , ORDER_ITEMS B
     , CUSTOMERS C   
 WHERE 1=1 
   AND A.STATUS = 'Shipped'
   AND A.ORDER_ID = B.ORDER_ID 
   AND A.CUSTOMER_ID = C.CUSTOMER_ID 
 GROUP BY C.NAME, TO_CHAR(A.ORDER_DATE, 'YYYY')
 ORDER BY C.NAME;
SELECT * 
  FROM CUSTOMER_SALES;

- 이 CREATE VIEW문은  발송된 주문에 대한 연도별 각 고객의 매출 총 금액을 구하는 뷰를 생성하는 SQL문이다.
- 뷰를 만들면 SELECT문을 반복적으로 Typing할 필요 없이 해당 뷰를 SELECT하면 된다. 

 

반응형