2-2장 SQL 활용 - 6절 윈도우 함수

Study/SQLD

2-2장 SQL 활용 - 6절 윈도우 함수

tnddj1219 2022. 7. 2. 02:52
728x90

1. WINDOW FUCTION(윈도우 함수) 개요

개념
행과 행간의 관계를 쉽게 정의하기 위해 만든 함수
WINDOW
함수는 다른 함수와는 달리 중첩(NEST)해서 사용하지는 못하지만, 서브쿼리에서는 사용할 수 있다.
분석 함수나 순위 함수

 

사용 방법
명령어: SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ([PARTITION BY 칼럼] [ORDER BY ] [WINDOWING ]) FROM 테이블 명;
- WINDOW_FUNCTION:
기존에 사용하던 함수도 있고, 새롭게 WINDOW 함수용으로 추가된 함수도 있음
- ARGUMENTS(
인수): 함수에 따라 0 ~ N개의 인수가 지정될 수 있다.
- PARTITION BY
: 전체 집합을 기준에 의해 소그룹으로 나눌 수 있다.
- ORDER BY
: 어떤 항목에 대해 순위를 지정할 지 ORDER BY 절을 기술한다.
- WINDOWING
: WINDOWING 절은 함수의 대상이 되는 행 기준의 범위를 강력하게 지정 ROWS, RANGE 중 하나를 선택해서 사용할 수 있다.  SQL Server에서는 지원하지 않는다.
-- BETWEEN A AND B:
구간 지정(N PRECEDING, N FOLLOWING : N번째 앞 행, N번째 뒤 행 / UNBOUNDED PRECEDING, UNBOUNDED FOLLOWING : 첫 행, 끝 행 / CURRENT ROW : 현재 행)

 

2. WINDOW FUCTION(윈도우 함수) 종류

RNAK 함수
특정 컬럼에 대한 순위를 구하는 함수. RANK, DENSE_RANK, ROW_NUMBER 함수
특점 범위 내에서 순위를 구할 수도 있고, 전체 데이터에 대한 순위도 구할 수 있다

함수 내용
RANK 동일한 값에 대해서는 동일한 순위 부여 (1, 2, 2, 4 …)
DENSE_RANK 동일한 값에 대해서는 동일한 순위 부여 단, 중간 순위를 비우지 않음(1, 2, 2, 3 …)
ROW_NUMBER 단순히 행 번호 표시, 동일한 값이라도 고유한 순위를 부여

 

일반 집계함수(AGGREGATE) 함수

집계 관련 함수들. 일반적으로 많이 사용하는 SUM, MAX, MIN, AVG, COUNT 함수

함수 내용
SUM 파티션 별 윈도우의 합
MAX 파티션 별 윈도우의 최대값
MIN 파티션 별 윈도우의 최소값
AVG 파티션 별 윈도우의 평균값
COUNT 파티션 별 ROWS 윈도우의 데이터의 개수

 

그룹 내 행순서 함수
그룹 내 행순서 관련 함수들. FIRST_VALUE, LAST_VALUE, LAG, LEAD 함수

함수 내용
FIRST_VALUE 파티션별 윈도우에서 가장 먼저 나온 값
LAST_VALUE 파티션별 윈도우에서 가장 나중에 나온 값
LAG 파티션별 윈도우에서 이전 몇 번째 행의 값
LEAD 파티션별 윈도우에서 이후 몇 번째 행의 값

 

그룹 내 비율 함수
그룹 내 비율 관련 함수들. CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT 함수

함수 내용
RATIO_TO_REPORT 파티션 내 전체 SUM(칼럼)값에 대한 행별 칼럼 값의 백분율을 소수점으로 구함
결과 값은 0~1 사이의 범위를 가짐. 개별 RATIO의 합을 구하면 1이 됨
PERCENT_RANK 파티션별 윈도우의 순서별 백분율. 제일 먼저 나오는 것을 0, 제일 늦게 나오는 것을 1
CUME_DIST 파티션별 윈도우의 전체건수에서 현재 행보다 작거나 같은 건수에 대한 누적백분율
NTILE 파티션별 전체 건수를 ARGUMENT 값으로 N 등분한 결과

 

728x90