윈도우 함수는 테이블 내의 특정 범위인 윈도우가 포함한 행들을 대상으로 연산을 수행합니다. 윈도우가 포함하고 있는 테이블의 행에 대한 집계, 순위, 비율 등의 연산을 수행할 수 있습니다. 윈도우 함수는 **GROUP BY
**와 유사한 방식으로 데이터를 그룹화하고 집계합니다. **GROUP BY
**는 데이터를 그룹별로 하나의 행을 반환합니다.
하지만, 윈도우함수는 결과를 단일 값으로 축소하지 않고 윈도우 범위에 따라 각 행에 대한 새로운 값을 반환하여 원본 데이터의 행 수를 유지한다는 점에서 **GROUP BY
**와 차이가 있습니다.
아래 4가지의 특징인 ‘계산의 다양성’, ‘성능 향상’, ‘코드의 간결성’, ‘분석의 편의성’을 위해 윈도우 함수를 사용합니다. 데이터 분석 및 집계 작업을 더 유연하게 수행할 수 있으며, 복잡한 데이터 분석 작업을 단순화할 수 있습니다.
AVG
), 합계(SUM
), 카운트(COUNT
) 등 계산을 각 행에 수행할 수 있습니다.SQL 데이터베이스 시스템(PostgreSQL, MySQL, SQL Server, Oracle)에서 지원되며, 데이터베이스 시스템에 따라 문법과 지원하는 윈도우 함수가 다를 수 있습니다.
<aside> 💡 윈도우 함수는 결과 집합의 특정 윈도우에 걸쳐 계산을 수행하는 데 설계되었습니다. 이러한 연산의 특성상 다른 윈도우 함수 내에서 중첩하여 윈도우 함수를 호출하는 것은 SQL 표준에서 허용되지 않습니다.
</aside>
윈도우 함수는 특정 범위의 윈도우에 연산을 적용하게 해주는 기능입니다. 윈도우 함수는 특정 행의 구문 내에서 연산을 수행하면서 그룹화 없이 각 행을 개별적으로 반환합니다.
SELECT WINDOW_FUNCTION(ARGUMENTS) OVER(PARTITION BY column [1|2|,,]
ORDER BY [1|2|,,] WINDOW_frame)
FROM Table1;