PostgreSQL CTE(공통 테이블 표현식)를 사용하여 복잡한 쿼리를 단순화하는 방법
공통 테이블 표현식이 포함하는 다른 SQL 문 내에서 참조 할 수있는 임시 결과 집합 SELECT, INSERT, UPDATE또는 DELETE.
공통 테이블 표현식은 쿼리 실행 중에만 존재한다는 점에서 일시적입니다.
WITH cte_name (column_list) AS (
CTE_query_definition
)
statement;
- 먼저 선택적 열 목록 다음에 CTE의 이름을 지정합니다.
- 둘째, WITH절의 본문 내에서 결과 집합을 반환하는 쿼리를 지정합니다. CTE 이름 뒤에 열 목록을 명시적으로 지정하지 않으면 의 선택 목록 CTE_query_definition이 CTE의 열 목록이 됩니다.
- 셋째는 statement에서 테이블이나 뷰처럼 CTE를 사용할 수있다 SELECT, INSERT, UPDATE, 또는 DELETE.
반응형
1) cte 예제
WITH cte_film AS (
SELECT
film_id,
title,
(CASE
WHEN length < 30 THEN 'Short'
WHEN length < 90 THEN 'Medium'
ELSE 'Long'
END) length
FROM
film
)
SELECT
film_id,
title,
length
FROM
cte_film
WHERE
length = 'Long'
ORDER BY
title;
공통 테이블 표현식에는 두 부분이 있습니다.
- 첫 번째 cte_film 부분은 CTE의 이름을 정의합니다.
- 두 번째 cte_film부분은 SELECT표현식을 행으로 채우는 명령문을 정의합니다 .
2) cte join 예제
WITH cte_rental AS (
SELECT staff_id,
COUNT(rental_id) rental_count
FROM rental
GROUP BY staff_id
)
SELECT s.staff_id,
first_name,
last_name,
rental_count
FROM staff s
INNER JOIN cte_rental USING (staff_id);
다음은 공통 테이블 표현식 또는 CTE를 사용할 때의 몇 가지 이점입니다.
- 복잡한 쿼리의 가독성을 향상시킵니다. CTE를 사용하여 보다 체계적이고 읽기 쉬운 방식으로 복잡한 쿼리를 구성합니다.
- 재귀 쿼리를 생성하는 기능. 재귀 쿼리 는 자신을 참조하는 쿼리입니다. 재귀 쿼리는 조직도 또는 BOM과 같은 계층적 데이터를 쿼리할 때 유용합니다.
- window function 과 함께 사용합니다. CTE를 창 함수와 함께 사용하여 초기 결과 집합을 만들고 다른 select 문을 사용하여 이 결과 집합을 추가로 처리할 수 있습니다.
반응형
'SW ENGINEERING > Postgres' 카테고리의 다른 글
[PostgreSQL] BASIC - Recursive Query (0) | 2021.09.03 |
---|---|
[PostgreSQL] BASIC - EXISTS (0) | 2021.09.03 |
[PostgreSQL] BASIC - ALL (0) | 2021.09.03 |
[PostgreSQL] BASIC - ANY (0) | 2021.09.03 |
[PostgreSQL] BASIC - Subquery (0) | 2021.09.03 |
최근댓글