함수 이름은 계산 방법, PARTITION은 범위, ORDER BY는 순서, 프레임은 현재 행 기준 범위를 정합니다.
ROW_NUMBER() OVER ( PARTITION BY dept ORDER BY salary DESC ) AS rn
| SQL 조각 | 결과에서 보이는 효과 |
|---|---|
| ROW_NUMBER() | 각 행에 고유 순위 번호가 붙음 |
| PARTITION BY dept | 부서별로 순위가 1부터 다시 시작 |
| ORDER BY salary DESC | 급여가 높은 행부터 번호를 받음 |
| WHERE rn <= 3 | 서브쿼리 바깥에서 TOP-N을 필터링 |
| 직원 | 부서 | 급여 | rn | dept_avg |
|---|---|---|---|---|
| 민준 | 개발 | 7000 | 1 | 6400 |
| 서연 | 개발 | 6200 | 2 | 6400 |
| 도윤 | 영업 | 5600 | 1 | 5200 |