SQL/개념

SQL 라이브 세션 5회차

jjangdoll 2025. 1. 2. 12:18

윈도우 함수

- over() 절과 함께 사용

-- 윈도우 함수 기본문법

SELECT 윈도우함수(컬럼1) OVER (
    [PARTITION BY 컬럼2] -- 그룹화
    [ORDER BY 컬럼3 ASC|DESC] -- 정렬
    [ROWS|RANGE BETWEEN A AND B] -- 계산 범위
) AS 결과
FROM 테이블;

진행순서

1. 컬럼2를 파티션으로 나눔
2. 컬럼3을 정렬
3. 정렬된 데이터 내에서 연산범위 설정
4. 지정된 범위와 정렬에 따라 윈도우 함수 값 계산

윈도우 함수의 특징

- 원본 데이터를 유지하면서 계산된 데이터가 별로도 표시됨
- 그룹바이처럼 집계함수빼고 싹 묶어야 하는게 아니라 각 행마다 실행되기 때문에 다 묶어도 됨

윈도우 함수 실행 순서

FROM → ON → JOIN → WHERE → GROUP BY → HAVING →**_ [윈도우 함수] _**→ SELECT → DISTINCT → ORDER BY → LIMIT 

윈도우 함수 종류

- rank() : 공통된 값 같은 순위, 다음 순위는 그 다음부터 (ex. 1위, 1위, 3위)
- dense_rank() : 밀도있게 순위 매겨짐 (1위, 1위, 2위, 3위)
- row_number() : 번호 매겨줌
-lag() : 전 행값을 가져옴 (파티션 끝나면 null 값 가져옴)
-lead() : 다음 행값을 가져옴 (파티션 끝나면 null 값 가져옴)
-percent_rank() : 행값 순위 비율을 추가해줌

파티션 범위 지정 

- unbounded preceding : 파티션 내에서 제일 앞 (기본값)
- unbounded following : 파티션 내에서 제일 뒤
- current row : 현재 행까지 계산
- row : 데이터 _**'행'**_ 순서 기준 (앞 뒤로)
- range : 데이터 _**'값'**_ 기준 (값 +-로)
- N PRECEDING : 현재 행에서  N개 이전 행까지 계산
- n following : 현재 행에서 N개 이후 행까지 계산
- between a and b : a에서 b까지 범위 계산

'SQL > 개념' 카테고리의 다른 글

SQL | LIMIT, OFFSET  (0) 2025.01.09
SQL | DISTINCT, NULL  (0) 2025.01.06
SQL 라이브 세션 4회차  (0) 2025.01.02
SQL | 대여기간, DATE_FORMAT vs YEAR  (0) 2025.01.02
SQL 라이브 세션 3회차  (0) 2024.12.23