윈도우 함수
- 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 |