SQL

MYSQL 윈도우 함수(window function)

수박비빔밥 2024. 3. 18. 00:58
반응형

MySQL에서 윈도우 함수는 현재 행과 관련된 일련의 행에 대해 계산을 수행할 수 있게 해주는 기능입니다. 그러나 집계 함수와 달리, 윈도우 함수는 행을 단일 출력 행으로 축소하지 않고 결과 세트에서 개별 행을 보존합니다. 이로 인해 윈도우 함수는 특정 "윈도우" 내에서 실행 합계, 이동 평균 등의 누적 또는 비교 분석에 특히 유용합니다.

MySQL에서 윈도우 함수의 핵심 개념:

  • OVER() 절: 함수가 작동하는 윈도우를 정의하는 곳입니다. OVER() 절에는 행의 정렬 및 분할을 포함할 수 있습니다.
  • PARTITION BY: OVER() 절 내에서 사용되며, 윈도우 함수가 독립적으로 적용되는 분할로 결과 세트를 나눕니다.
  • ORDER BY: 또한 OVER() 절 내에서 사용되며, 각 분할 내의 행의 순서를 결정합니다.
  • 프레임 명세: 함수에 의해 처리되는 분할 내의 행의 하위 집합을 정의합니다. 예를 들어, 현재 행 이전과 이후의 범위를 지정할 수 있습니다.

윈도우 함수의 예시:

1. ROW_NUMBER(): 적용된 각 행에 1부터 시작하는 고유 번호를 할당합니다.


2. RANK() 및 DENSE_RANK(): 분할 내의 각 행에 순위를 할당하며, 비동점 행에 대해 순위 값에 간격이 있는 (RANK) 경우와 없는 (DENSE_RANK) 경우가 있습니다.

 

3. SUM(), AVG(), MIN(), MAX(): 윈도우에 의해 정의된 일련의 행에 대해 계산을 수행합니다.

4. LEAD(), LAG(): 자가 조인을 사용하지 않고 후속 행이나 이전 행의 데이터에 접근합니다.

5.FIRST_VALUE(), LAST_VALUE(): 세트에서 첫 번째 또는 마지막 값을 가져옵니다.

사용법:

MySQL에서 윈도우 함수를 사용하려면, SELECT 문에 포함시키고 행의 분할 및 정렬을 정의하는 OVER() 절을 따라야 합니다. 일반적인 구조는 다음과 같습니다

 

윈도우 함수는 MySQL 8.0에서 도입되었으므로 이전 버전의 MySQL에서는 사용할 수 없습니다. 복잡한 계산 및 분석을 SQL 쿼리 내에서 직접 수행할 수 있는 강력한 기능입니다.

반응형