WINDOW FUNCTION이란?

YOBY·2023년 10월 6일
0

WINDOW FUNCTION은 SQL에서 사용되는 특별한 종류의 함수입니다.

이 함수는 쿼리 결과 집합 내에서 특정 창(window)에 대해 계산을 수행하며, 일반적으로 그룹화나 집계와 관련된 작업에서 사용됩니다.

간단한 예제를 통해 설명해보겠습니다.
아래의 예시는 sales 테이블에서 각 제품의 판매액에 대한 누적 합계를 계산하는 쿼리입니다.

SELECT
  product,
  sale_date,
  amount,
  SUM(amount) OVER (PARTITION BY product ORDER BY sale_date) as cumulative_sales
FROM sales;

여기서 SUM(amount) OVER (PARTITION BY product ORDER BY sale_date) 부분이 WINDOW FUNCTION입니다.


이 함수는 다음과 같이 구성되어 있습니다.

  • SUM(amount): 누적 합계를 계산할 대상 열.

  • OVER: 윈도우 함수를 시작하는 키워드.

  • (PARTITION BY product ORDER BY sale_date): 윈도우를 어떻게 정의할 것인지를 나타냅니다.


이 경우 product로 그룹화하고, sale_date에 따라 정렬합니다.
위의 쿼리는 결과 집합의 각 행에 대해 product로 그룹화한 후, sale_date에 따라 정렬합니다.
그런 다음 해당 제품 내에서 각 판매일자의 누적 합계를 계산합니다.

예를 들어, 아래와 같은 sales 데이터가 있다고 가정해봅시다:

| product | sale_date  | amount |
|---------|------------|--------|
| A       | 2023-10-01 | 100    |
| A       | 2023-10-02 | 200    |
| B       | 2023-10-01 | 150    |
| B       | 2023-10-03 | 300    |

쿼리의 결과는 다음과 같습니다:

| product | sale_date  | amount | cumulative_sales |
|---------|------------|--------|-----------------|
| A       | 2023-10-01 | 100    | 100             |
| A       | 2023-10-02 | 200    | 300             |
| B       | 2023-10-01 | 150    | 150             |
| B       | 2023-10-03 | 300    | 450             |

위의 결과에서 cumulative_sales 열은 각 행에서 해당 제품의 판매액의 누적 합계를 나타냅니다.

WINDOW FUNCTION은 데이터를 세분화하고 계산을 보다 정교하게 수행할 때 유용합니다.

예를 들어, 랭킹, 누적 합계, 이동 평균 등을 계산할 때 자주 활용됩니다.

0개의 댓글