brunch

You can make anything
by writing

C.S.Lewis

by 강한별 Nov 24. 2016

야근을 줄이는 SQL Window function

SQL을 배운 지 꽤 됐는데 Window function은 들어본 적만 있고 사실 잘 모르는 상태였다. Redshift를 기준으로 내가 자주 쓸 것 같은 Window function만 정리했다. 왜 배워야 하느냐고 한다면 학습 비용보다 학습 후 분석의 용이성이 더 크기때문이라 생각한다. 더 자세한 내용이 궁금하신 분은 이쪽으로. 설명도 잘 되어 있다.


Window Function : 
행과 행간의 관계를 쉽게 정의하기 위해 만든 함수가 바로 WINDOW FUNCTION이다.
윈도우 함수를 활용하면 복잡한 프로그램을 하나의 SQL 문장으로 쉽게 해결할 수 있다.
분석 함수(ANALYTIC FUNCTION)나 순위 함수(RANK FUNCTION)로도 알려져 있는 윈도우 함수 (ANSI/ISOSQL 표준은 WINDOW FUNCTION이란 용어를 사용함)는 데이터웨어하우스에서 발전한 기능이다.

출처 : 구루비의 지식창고


설명이 좀 짧은데 더 자세한 설명이 필요하면 Amazon Redshift에서의 Window function에 대한 설명을 봐도 좋을 것 같다. 굳이 Amazon Redshift를 고른 이유는 내가 Redshift를 사용하고 있어서이지 다른 이유는 없다.


사용은  

WINDOW_FUNCTION (ARGUMENTS) OVER ( [PARTITION BY 칼럼]] [ORDER BY 절] [WINDOWING 절] )

이런 식이기 때문에 어렵지 않다.



[Window function list] (내가 자주 쓸 것 같은 것만 임의로 추출한 것)


CUME_DIST 누적 비중

RANK 순위

DENSE_RANK RANK이지만 동일한 순위값이 있어도 다음 값이 바로 나옴

FIRST_VALUES 가장 큰 값에 해당하는 값에 지정된 표현식

LAST_VALUES 가장 작은 값에 해당하는 값에 지정된 표현식

LAG 그 이전 값을 출력

LEAD 그 이후의 값을 출력

LISTAGG 출력될 값을 그룹으로 묶어서 출력

MAX 해당 셀에서까지의 최대값 출력

MEDIAN 해당 셀에서까지의 중간값 출력

MIN 해당 셀에서까지의 최소값 출력

NTH_VALUE n번째 값을 출력

NTILE n개로 그룹을 나눔

PERCENT_RANK (x - 1) / (the number of rows in the window or partition - 1)

RATIO_TO_REPORT value of ratio_expression. argument for the current row / sum of ratio_expression. argument for the window or partition

ROW_NUMBER 몇 번째 행인지를 출력

STDDEV_SAMP/STDDEV_POP 모집단, 샘플의 표준편차

VAR_SAMP, VAR_POP 모집단, 샘플의 분산

keyword
매거진의 이전글 같이 일하고 싶은 사람이 되는 것
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari