SQL
VIEW
peach_h
2022. 10. 5. 21:56
INLINE VIEW
SELECT A.* FROM(SELECT NAME, CREDIT_LIMIT FROM CUSTOMERS) A;
SELECT문의 FROM 절에 쓴 특정 SELECT 문을 INLINE VIEW라고함.
INLINE VIEW속 INLINE VIEW
SELECT A.* FROM
( SELECT A.* FROM
( SELECT NAME, CREDIT_LIMIT FROM CUSTOMERS) A) A;
INLINE VIEW안에 INLINE VIEW넣기 무한으로 가능함 !
연도별 각 고객의 매출 총 금액 구하기
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;
STATUS = 'Shipped' 배송된
주문번호 ID , CUSTOMER ID 조인
연도별로 GROUP_BY
SUM( 판매량*가격 ) = SALES AMOUNT 연도별 매출액
CREATE OR REPLACE VIEW ~ AS SELECT ~
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;
CUSTOMER_SALES라는 VIEW를 만든다.
SELECT *
FROM CUSTOMER_SALES;
간단히 작성해도 똑같은 결과집합을 볼 수 있음
내부 데이터 값이 변하면 ?? -> 항상 내용이 변화되서 조회 됨 문제없다.
VIEW를 사용하면 일관성있고 통일성있게 업무를 처리할 수 있음 !!
2017년도에 매출이 높은 고객순으로 정렬
SELECT CUSTOMER, SALES_AMOUNT
FROM CUSTOMER_SALES
WHERE YEAR = 2017
ORDER BY SALES_AMOUNT DESC;
총 매출이 가장 높은 고객은 ?
SELECT CUSTOMER, SUM(SALES_AMOUNT) AS SUM_SALES_AMOUNT
FROM CUSTOMER_SALES
GROUP BY CUSTOMER
ORDER BY SUM_SALES_AMOUNT DESC;
고객별로 SALES_AMOUNT를 모두 더해서 SUM_SALES_AMOUNT를 구한 뒤 , 내림차순으로 정렬