본문 바로가기
Infra

[SQL] Window Function(윈도우함수)

by GOMJ 2025. 1. 12.

윈도우 함수란 행과 행간의 관계를 정의하기 위해 사용하는 함수를 의미한다.

 

순위함수, 집계함수, 통계함수라고 불리기도 한다.

 

윈도우 함수는 다음과 같이 사용이 가능하다.

SELECT WINDOW_FUNCTION(ARGUMENTS)
  OVER (PARTITION BY ~ ORDER BY ~)
FROM TABLE;

 

예를 들어 테이블 A에서 최대 값을 구한다고 치자.

 

기본적으로 GROUP BY를 사용하면 다음과 같이 구하게 된다.

 

SELECT MAX(A.salary)
FROM EMP A
GROUP BY A.dept;

 

 

하지만 윈도우 함수를 사용하게 되면 다음과 같이 사용이 가능하다.

 

SELECT MAX(A.salary) OVER(PARTITION BY A.dept)
FROM EMP A;

 

그렇다면 왜 윈도우함수를 사용하게 됐을까?

 

그 이유는 쿼리 작성이 훨씬 편하고 보기 쉽기 때문이다. 

 

가장 극단적인 예로 row_number()를 예로 들 수 있다. 이전에 해당 윈도우 함수가 없던 시절에는

 

서브쿼리에 재귀적인 쿼리를 사용해 row_number() 표현했다. 하지만 row_number()가 사용이 가능하면서부터 단 1줄의 쿼리로 작성이 가능하게 됐다. 

 

물론 윈도우 함수가 만능은 아니지만, 적절한 상황에 활용하면 꽤 편리하게 쿼리 작성이 가능하므로 알아두면 도움이 된다고 생각한다.

'Infra' 카테고리의 다른 글

erwin 오류  (0) 2025.03.09
무조건적인 인덱스는 좋지 않다.  (2) 2025.03.02
서버 이중화 (Active-Active, Active-Standby)  (0) 2025.01.12
Docker란 ?  (0) 2024.12.29
Rust compile error - linker cc not found  (2) 2024.12.27