윈도우 함수 결과로 필터링하려면 먼저 서브쿼리나 CTE에서 rn 열을 만든 뒤 바깥 WHERE를 적용합니다.
-- 오류
SELECT name,
ROW_NUMBER() OVER (...) AS rn
FROM employees
WHERE rn <= 3;
-- 정상
SELECT *
FROM (
SELECT name,
ROW_NUMBER() OVER (...) AS rn
FROM employees
) ranked
WHERE rn <= 3;
| 서브쿼리 결과 | salary | rn | 바깥 WHERE |
|---|---|---|---|
| 민준 | 7000 | 1 | 통과 |
| 서연 | 6200 | 2 | 통과 |
| 지우 | 6000 | 3 | 통과 |
| 도윤 | 5600 | 4 | 제외 |