-
[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에 작성되어 있습니다.