가상테이블 WITH P1 AS

Jung In Lee·2024년 4월 1일
0

(1) 가상테이블 WITH P1 AS (SUBQUERY)

  • oracle9 이상에서 지원이된다고한다. (그런데 mysql에서도 사용이 가능한것같다.)

  • 메모리에 생성되므로, 엑세스 속도가 빠르며, 조회후 자동으로 소멸된다고 한다.

  • 기본적으로 원하는 데이터를 추출하기에 굉장히 유리한 형태이다.

WITH P1 AS (
    SELECT j.FLAVOR, (SUM(f.TOTAL_ORDER) + SUM(j.TOTAL_ORDER)) AS TOTAL_ORDER
    FROM FIRST_HALF f RIGHT JOIN JULY j
    ON f.SHIPMENT_ID = j.SHIPMENT_ID
    GROUP BY j.FLAVOR
    ORDER BY TOTAL_ORDER DESC
    LIMIT 3)
    
   SELECT FLAVOR
   FROM P1; 
  • 보통 저런 서브쿼리안에서 FLAVOR 만을 조회하려면, TOTAL_ORDER을 아래로 내려서 작성해야한다.
    SELECT j.FLAVOR
    FROM FIRST_HALF f RIGHT JOIN JULY j
    ON f.SHIPMENT_ID = j.SHIPMENT_ID
    GROUP BY j.FLAVOR
    ORDER BY (SUM(f.TOTAL_ORDER) + SUM(j.TOTAL_ORDER)) DESC
    LIMIT 3
  • 이런 괴이한 형태가 되는데, WITH TABLE AS를 사용하면 그냥 전자와같이 묶은후 원하는 정보만 출력하면된다.
  • 어떤게 더 좋다 나쁘다를 따지는건 아니고, 가독성의 차이인것같다. 나는 전자가 보기 더 좋은것같다.
profile
Spring Backend Developer

0개의 댓글