- 윈도우 함수 (Window Function)
- 데이터베이스 쿼리나 데이터 분석에서 주로 사용되는 함수
- 데이터셋을 그룹화하거나 정렬한 후에 특정 연산 적용하는데 사용
- 분석 함수 또는 순위 함수라고도 한다.
- 여기서 윈도우란 연산이 수행되는 데이터셋의 부분집합으로 지정된 분할 기준에 의해서 정의되며 함수가 적용되는 범위를 지정하는 역할을 한다.
- 윈도우 함수 사용
- 반드시 OVER 절이 필요하다.
- OVER 절은 윈도우 함수가 작동하는 윈도우를 정의하며 파티션과 순서를 지정할 수 있다.
- 윈도우 함수의 종류에 따라서 0~n개의 인수(arguments)가 지정될 수 있다.
- 형식
-
SELECT 윈도우함수명(인수) OVER([PARTITION BY 컬럼] [ORDER BY 컬럼] [WINDOWING절]) FROM 테이블명;
-
- 집계 윈도우 함수
- OVER절을 사용하여 정의하는 집계 윈도우 함수는 PARTITION BY절을 사용하여 그룹화
- 행의 데이터와 집계된 값을 함께 볼 수 있다.
- OVER 절
- 결과를 생성하기 위해 입력으로 고려해야 하는 행의 일부를 OVER절에서 정의
- 예시
- AVG(컬럼) OVER() AS 평균
- PARTITION BY 절
- 전체 집합을 특정 기준에 의해 소그룹으로 나누고자 할 때 OVER 절 내에서 PARTITION BY 절 사용
- 예시
- 컬럼 - AVG(컬럼) OVER(PARTITION BY 컬럼2) AS 차이
- ORDER BY 절
- OVER 절에 정렬기준 지정
- 예시
- SUM(컬럼) OVER(ORDER BY 컬럼2) AS 누적합
- 순위 윈도우 함수
- 행 간의 값을 비교하여 순위를 매기는 함수
- 종류
- RANK()
- 순위 반환, 동일 순위에 동일한 숫자 값 반환 후 그 다음 순위는 해당 동일 수만큼 더해짐
- DENSE_RANK()
- 순위 반환, 동일 순서에 동일한 숫자 값 반환 후 그 다음 순위는 + 1
- ROW_NUMBER()
- 순위 반환, 모든 행에 순차적으로 번호 부여
- PERCENT_RANK()
- 백분율 순위 값, 0~1 사이의 값 부여
- CUME_DIST()
- 누적 분포 계산 (백분율)
- NTILE(n)
- 지정된 수의 그룹으로 수로 나눠서 해당 행이 속한 그룹 번호 반환
- RANK()
- 행 순서 윈도우 함수
- 특정 행의 위치에 있는 값을 가져올 때 사용
- 종류
- FIRST_VALUE()
- 정렬된 값 집합의 첫번째 값 반환
- LAST_VALUE()
- 정렬된 값 집합의 마지막 값 반환
- LAG()
- 명시된 값을 기준으로 이전 행 값 반환
- LEAD()
- 명시된 값을 기준으로 이후 행 값 반환
- NTH_VALUE(n)
- 윈도우의 n번째 행 값 반환
- FIRST_VALUE()
'SQL' 카테고리의 다른 글
[SQL] 프로그래머스 Lv.1 풀며 정리했던 연산자, 함수들 (0) | 2024.08.26 |
---|---|
[SQL] 데이터 모델링 (0) | 2024.03.23 |
[SQL] 제약 조건 (0) | 2024.03.23 |
[SQL] DDL (CREATE, ALTER, DROP) (0) | 2024.03.23 |
[SQL] DML (INSERT, UPDATE, DELETE) (0) | 2024.03.22 |