윈도우 함수란?
행마다 계산한 값, 즉 행간의 관계에 대해 집계할 수 있는 함수 입니다.
SELECT WINDOW_FUNCTION(ARGUMENTS)
OVER ([PARTITION BY 컬럼] [ORDER BY 컬럼] [ROWS BETWEEN ...])
FROM 테이블명;
- WINDOW_FUNCTION: 사용할 윈도우 함수를 지정
- ARGUMENTS: 함수에 따라 0개 이상의 인수를 설정
- PARTITION BY: 데이터를 소그룹으로 나누는 기준이 되는 컬럼을 지정
- ORDER BY: 결과를 정렬할 기준이 되는 컬럼을 지정
- ROWS BETWEEN: 윈도우 프레임을 설정하는 옵션으로, 어떤 행을 포함할지를 정의
주요 윈도우 함수 유형
순위
RANK(): 동일한 값에 동일한 순위를 부여하며, 순위가 비어있지 않도록 합니다.
DENSE_RANK(): 동일한 값에 동일한 순위를 부여하지만, 순위가 비어있지 않습니다.
ROW_NUMBER(): 각 행에 대해 고유한 순위를 부여합니다.
SELECT JOB, ENAME, SAL,
RANK() OVER (ORDER BY SAL DESC) AS ALL_RANK,
RANK() OVER (PARTITION BY JOB ORDER BY SAL DESC) AS JOB_RANK
FROM EMP;
집계
SUM(), AVG(), MAX(), MIN(), COUNT(): 특정 파티션 내에서 집계 값을 계산합니다.
SELECT MGR, ENAME, SAL, SUM(SAL) OVER (PARTITION BY MGR) AS MGR_SUM
FROM EMP;
행 순서
FIRST_VALUE(), LAST_VALUE(), LAG(), LEAD(): 특정 기준에 따라 이전 또는 다음 행의 값을 가져옵니다.
SELECT ENAME, HIREDATE, SAL, LAG(SAL) OVER (ORDER BY HIREDATE) AS PREV_SAL
FROM EMP
WHERE JOB = 'SALESMAN';
비율
CUME_DIST(), PERCENT_RANK(), NTILE(), RATIO_TO_REPORT(): 데이터의 비율이나 순위를 계산
SELECT ENAME, SAL, NTILE(4) OVER (ORDER BY SAL DESC) AS QUARTILE
FROM EMP;
'데이터핸들링 > 데이터전처리' 카테고리의 다른 글
[Python] 주민등록번호로 연령, 연령대 구하기 (0) | 2024.11.18 |
---|---|
[Python, 구글스프레드시트] 날짜 형식 변경 (0) | 2024.11.16 |
[Python] merge,concat 데이터 join하기(=합치기) feat. 이제 행 중복 오류를 곁들인... (0) | 2024.10.30 |