one of a kind scene

[SQL] Window Function(윈도우 함수)에 대해서 본문

카테고리 없음

[SQL] Window Function(윈도우 함수)에 대해서

specialscene 2020. 3. 27. 00:43

Window Function(윈도우 함수)에 대해서

(궁금증을 갖게된 계기)

면접에서 SQL 문제를 Window Function이나 Analytic Function으로 풀어보라는 질문을 받았었는데, Window Function이나 Analytic Function를 쓰고는 있었지만 용어를 알지 못해서 풀지 못해 이번 기회에 정리하고자 한다.

 

1. Window Function 이란?

     • 기존 관계형 데이터베이스는 칼럼과 칼럼간의 연산, 비교, 연결이나 집합에 대한 집계는 쉬운 반면, 행과 행간의 관계를 정의하거나, 행과 행간을 비교, 연산하는 것을 하나의 SQL문으로 처리하는 것은 매우 어려운 일이었다. 하지만, 윈도우 함수를 이용한다면 행과 행간의 관계를 쉽게 정의할 수 있게 된다.      
     • 분석 함수(ANALYTIC FUNCTION)나 순위 함수(RANK FUNCTION)로도 알려져 있는 윈도우 함수는 데이터 웨어하우스에서 발전한 기능이다. 

     • 이를 통해, 좀 더 풍부하게 데이터를 볼 수 있음

     • 예를 들어 SELECT SUM() OVER() as total, SUM() OVER(partition by group) as group_total 이라고 해주면 전체 합과 그룹별 합을 함께 볼 수 있음

     • 나는 분석 함수라고 용어를 알고는 있었지만, 용어를 사용해서 얘기할 일이 없어서 OVER() 절을 쓰는 함수라고 알고 있었다.

 

2. Window Function 의 종류

     • 그룹 내 집계 관련 함수 : SUM, MAX, MIN, AVG, COUNT

     • 그룹 내 행 순서 관련 함수 : FIRST_VALUE, LAST_VALUE, NTH_VALUE, LAG, LEAD, PERCENTILE_CONT(), PERCENTILE_DISC()

     • 그룹 내 순위 관련 함수 : RANK, DENSE_RANK, ROW_NUMBER

     • 그룹 내 비율 관련 함수 : CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPOST

     • 통계 분석 관련 함수 : STDDEV, VARIANCE ...

 

 

Reference

https://eehoeskrap.tistory.com/79

http://www.gurubee.net/lecture/2382