쿼리문를 다루면서 Join도 하고 Aggregate Functions도 쓰기 시작하면서 재미를 느낄 때쯤 한계가 찾아왔다.
추출된 데이터를 엑셀과 같은 툴로 가공하는 과정을 거친다면 크게 불편하지 않았겠지만,
단 한번의 쿼리문으로 잘 정돈된 테이블 보고 싶을 때가 있었다. 그때 바로 찾아본 게 윈도우 함수다.
윈도우 함수(Window Function)란?
현재 행과 어떤 식으로 관련된 일련의 테이블 행에 대해 계산을 수행한다.
기존 집계함수는 GROUP BY로 묶어낸 형태로 활용이 가능하지만, 윈도우 함수는 개별 결과를 해당 행에 그대로 나타낼 수 있다.
도식화를 하면,
작업순서는 GROUP BY, HAVING절 다음이며 SELECT절 바로 전이다.
윈도우 함수(Window Function)의 구문
- window_function : 사용하려는 윈도우 함수의 이름
- OVER : 윈도우 기능을 나타내기 위한 것
- PARTITION BY : 행을 파티션으로 분할하여 함수를 계산하는 사용할 행을 지정함
- ORDER BY : 각 파티션 내에서 행을 정렬할 수 있도록 사용함
- ROWS : 물리적인 행의 조건을 제한할 때 사용함
윈도우 함수(Window Function)의 종류
집계 함수: 평균, 최대값, 최소값, 합계, 카운트 등 기존 집계함수와 동일한 기능이되, 윈도우 함수내에서 동작
순위 함수: 파티션 내에서 행순위를 지정
값 함수: 파티션 내 이전 또는 다음 행의 값이나 파티션 내 첫번째, 마지막 값, 특정 행의 값을 불러올 수 있음
반응형
'데이터 > SQL' 카테고리의 다른 글
[MySQL] ST_DISTANCE_SPHERE 함수를 활용하여 거리/반경 구하기 (0) | 2023.05.05 |
---|---|
[MySQL] Order by 구문으로 숫자가 정렬되지 않을 때 (0) | 2022.11.16 |
[MySQL] 정규 표현식(instr(), like(), replace(), substr()) (0) | 2022.10.31 |
[MySQL] 없는 시간 표시하기(재귀적 CTE) (0) | 2022.10.26 |
[MySQL] 날짜 형식/포맷 변환 함수- DATE_FORMAT (0) | 2022.10.20 |
댓글