with 공통 테이블 표현식

Created by
  • 서경태
Created at
with 절은 공통 테이블 표현식(common table expression, CTE)을 정의하는데 사용된다. 쿼리의 일시적인 결과 집합을 정의하며, 이를 다른 select, insert, delete문에서 사용할 수 있다. CTE는 복잡한 쿼리를 단순화하고, 가독성을 높이며, 재귀 쿼리를 작성할 때 유용하다.
기본 구문
with cte_name as ( SELECT 컬럼1, 컬럼2, ... FROM 테이블명 WHERE 조건 ) select 컬럼1, 컬럼2, ... from cte_name
중복된 값을 찾고 그 데이터들을 나열하는 문제를 풀다 찾게 되었는데 위 기본 구문을 응용해서 문제르 풀었다.
1.
with 절을 사용해 중복된 값을 찾은 서브쿼리를 만든다.
2.
join을 사용해 원본 테이릅과 서브쿼리를 합쳐 전체 데이터를 조회한다.
작성된 코드는 아래와 같다.
with heavy_user as ( select id, name, host_id from places group by host_id having count(host_id) >= 2 ) select p.id, p.name, p.host_id from places p join heavy_user hy on hy.host_id = p.host_id order by p.id