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 등분한 결과 |
'Study > SQLD' 카테고리의 다른 글
2-2장 SQL 활용 - 8절 절차형 SQL (0) | 2022.07.03 |
---|---|
2-2장 SQL 활용 - 7절 DCL(Data Control Language) (0) | 2022.07.03 |
2-2장 SQL 활용 - 5절 그룹함수 (0) | 2022.07.01 |
2-2장 SQL 활용 - 4절 서브쿼리 (0) | 2022.06.30 |
2-2장 SQL 활용 - 3절 계층형 질의와 셀프 조인 (0) | 2022.06.30 |