ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PostgreSQL] with문으로 공통 테이블 식 (CTE) 사용하기
    DB/PostgreSQL 2021. 2. 27. 21:09

    CTE는 Common Table Expression으로 간단하게 쿼리 결과를 일시적으로 저장하여 테이블처럼 사용하는 것입니다. PostgreSQL에서는 with구문을 사용해 구현할 수 있습니다.

    WITH temp_query_result AS (
        SELECT 
               category_name,
               product_id,
               sales,
               row_number() over (PARTITION BY category_name ORDER BY sales DESC) AS rank
        FROM product_sales
    )
    
    SELECT *
    FROM temp_query_result;

    with문은 조회 결과 뿐만 아니라 values 구문을 사용해 유사 테이블을 만들 수 있습니다.

    WITH device(id, device) AS (
        VALUES
        (1, 'PC'),
        (2, 'AOS'),
        (3, 'IOS')
    )
    
    select *
    from device;

    위와 같이 하지 않는다면 union으로 가상의 테이블을 만들어 사용해야 하는데 union은 레코드가 많아지면 성능 문제가 발생할 수 있습니다.

    이렇게 중복으로 사용될 수 있는 조회 결과를 with구문으로 저장해 사용한다면 효율적으로 쿼리를 짤 수가 있습니다.

    with구문의 또다른 사용법은 https://brownbears.tistory.com/212에 작성되어 있습니다.

    댓글