database

[SQL] 윈도우 함수 (WINDOW FUNCTION)

sewonzzang123 2022. 2. 5.
반응형

 

WINDOW FUNCTION 개요

행과 행 간의 관계를 쉽게 정의하기 위해 만든 함수가 윈도우 함수입니다.

윈도우 함수는 분석 함수나 순위 함수로도 알려져 있습니다.

윈도우 함수는 기존에 사용하던 집계 함수도 있고, 새롭게 윈도우 함수 전용으로 만들어진 기능도 있습니다.

윈도우 함수는 다른 함수와 중첩해서 사용하지는 못하지만, 서브쿼리에는 사용할 수 있습니다.

 

WINDOW FUNCTION 종류

1. 그룹 내 순위(RANK) 관련 함수 : RANK, DENSE_RANK, ROW_NUMBER

2. 그룹 내 집계(AGGREGATE) 관련 함수 : SUM, MAX, MIN, AVG, COUNT (sql server는 OVER절의 ORDER BY 지원 X)

3. 그룹 내 행 순서 관련 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD (오라클에서만 지원)

4. 그룹 내 비율 관련 함수 : CUME_DIST, PERCENT_RANK, NTLE, RATIO_TO_REPORT

5. 선형 분석을 포함한 통계 분석 함수

 

WINDOW FUNCTION 문법

윈도우 함수에는 OVER문구가 키워드로 필수 포함됩니다.

OVER() 함수는 각 행 별로 특정 기준에 따라 필요한 집합을 구해 함수를 적용하고 싶을 때 쓰는 구문입니다.

그룹을 지어주기보다는 행의 범위를 지정해주는 의미에 더 가깝습니다. 

GROUP BY 절과의 차이점은 GROUP BY절은 결과 행 개수에 영향을 미치지만, OVER절은 영향을 미치지 않습니다.

SELCET WINDOW_FUNCTION (ARGUMENTS) OVER
(	[PARTITION BY 컬럼] [ORDER BY 컬럼] [WINDOWING 절]	)
FROM 테이블명;
WINDOW_FUNCTION  윈도우 함수
ARGUMENTS(인수) 함수에 따라 0 ~ N 개 인수가 지정될 수 있습니다.
PARTITION BY 절 전체 집합을 기준에 의해 소그룹으로 나눌 수 있습니다.
ORDER 절 어떤 항목에 대해 순위를 지정할 지 ORDER BY절을 기술합니다.
WINDOWING 절 WINDOWING 절은 함수의 대상이 되는 행 기준의 범위를 강력하게 지정할 수 있습니다.
(sql server에서는 지원하지 않습니다.)

 

1. 그룹 내 순위(RANK) 관련 함수

https://sewonzzang.tistory.com/9

 

[mysql] 자주 사용하는 select

1. RANK() / DENSE_RANK() / ROW_NUMBER() -순위매김 RANK 함수는 중복 값 들에 대해서 동일순위로 표시하고, 중복 순위 다음 값에 대해서는 중복 개수만큼 떨어진 순위로 출력하는 함수입니다. OVER()안에 RANK

sewonzzang.tistory.com

RANK, DENSE_RANK, ROW_NUMBER()

2. 그룹 내 집계(AGGREGATE) 관련 함수

: SUM, MAX, MIN, AVG, COUNT 

 

만약 NULL 이 있다면?

NULL 값의 연산은 언제나 NULL 이다.

집계함수는 NULL 값을 제외하고 처리한다.

NULL값으로 가능한 연산은 IS NULL, IS NOT NULL 뿐이다.

 

3. 그룹 내 행 순서 관련 함수

: FIRST_VALUE(가장 먼저 나온 값을 출력), LAST_VALUE(가장 나중에 나온 값을 출력), LAG(이전 값을 출력), LEAD( 다음 값을 출력)

4. 그룹 내 비율 관련 함수

: CUME_DIST(누적 순서상 몇 번쨰 위치하는지 0~1사이의 값으로 출력), PERCENT_RANK(순서상 몇 번째 위치하는지 0~1사이의 값으로 출력), NTLE(N개의 조로 분류), RATIO_TO_REPORT(전체 SUM 값에 대한 행별 컬럼 값의 백분율 소수점으로 출력)

 

반응형

댓글