Common Table Expression

Common Table Expression (CTE, 공통 테이블 식)

CTE(Common Table Expression)는 SELECT 또는 INSERT 키워드 바로 앞의 WITH 절에 지정된 쿼리에서 파생된 임시 결과 집합입니다. CTE는 단일 문의 실행 범위 내에서만 정의되며, 그 범위 안에서 참조될 수 있습니다. 복잡한 쿼리를 더 읽기 쉽게 만들고 반복되는 서브쿼리를 피할 수 있게 해줍니다.

출처: 문서

본문

설명 (Description)

A Common Table Expression (CTE)은 SELECT 또는 INSERT 키워드 바로 앞에 오는 WITH 절에 지정된 쿼리에서 파생된 임시 결과 집합입니다. CTE는 단일 문의 실행 범위 내에서만 정의되며, 그 범위 안에서 참조될 수 있습니다.

구문 (Syntax)

withClause: WITH cteClause [ , ... ]
cteClause: cte_name AS (select statement)

참고:

  • Sub-Query 블록 내에서는 WITH 절이 지원되지 않습니다.
  • CTE는 Views, CTAS, INSERT 문에서 지원됩니다.
  • 재귀 쿼리(Recursive Queries)는 지원되지 않습니다.

예시 (Examples)

WITH q1 AS ( SELECT key FROM src WHERE key = '5')
SELECT *
FROM q1;

-- chaining CTEs
WITH q1 AS ( SELECT key FROM q2 WHERE key = '5'),
q2 AS ( SELECT key FROM src WHERE key = '5')
SELECT * FROM (SELECT key FROM q1) a;

-- insert example
WITH q1 AS ( SELECT key, value FROM src WHERE key = '5')
FROM q1
INSERT OVERWRITE TABLE t1
SELECT *;

-- ctas example
CREATE TABLE t2 AS
WITH q1 AS ( SELECT key FROM src WHERE key = '4')
SELECT * FROM q1;

더 알아보기 (Learn more)