25분
윈도우 함수: GROUP BY 없이 집계하기
Day 1: 행 순서대로 번호 매기고 싶은데
윈도우 함수: GROUP BY 없이 집계하기
SQL 고급 - 윈도우 함수와 성능 최적화 > Day 1: 행 순서대로 번호 매기고 싶은데
학습 목표
윈도우 함수와 일반 집계 함수의 차이를 이해한다 OVER 절의 기본 구문을 익힌다
윈도우 함수가 뭔데?
여러 행을 보면서, 각 행에 결과를 붙이는 함수.
GROUP BY vs 윈도우 함수
GROUP BY: 축소
에디터 로딩 중...
결과:
에디터 로딩 중...
8명이 3개 행으로 축소됐다.
윈도우 함수: 유지
에디터 로딩 중...
결과:
에디터 로딩 중...
8명이 8개 행 그대로! 각 행에 평균값이 추가됐다.
핵심 차이
| 특성 | GROUP BY | 윈도우 함수 |
|---|---|---|
| 결과 행 수 | 그룹 수만큼 축소 | 원본 그대로 |
| 원본 데이터 | 접근 불가 | 함께 출력 |
| 용도 | 요약 보고서 | 비교 분석 |
OVER 절: 윈도우 함수의 핵심
에디터 로딩 중...
OVER() - 빈 괄호
에디터 로딩 중...
전체가 하나의 윈도우. 모든 행에 같은 평균값.
PARTITION BY - 그룹 나누기
에디터 로딩 중...
부서별로 독립적인 윈도우. 각 부서의 평균.
ORDER BY - 순서 지정
에디터 로딩 중...
높은 급여 순으로 번호 매기기.
PARTITION BY + ORDER BY
에디터 로딩 중...
부서 안에서 높은 급여 순으로 번호 매기기.
윈도우 함수의 종류
| 함수 | 하는 일 |
|---|---|
| 순위 함수 | ROW_NUMBER, RANK, DENSE_RANK, NTILE |
| 집계 함수 | SUM, AVG, COUNT, MAX, MIN (OVER와 함께) |
| 오프셋 함수 | LAG, LEAD, FIRST_VALUE, LAST_VALUE |
오늘은 순위 함수에 집중한다.