실행 순서

WHERE는 rn이 만들어지기 전에 실행된다

윈도우 함수 결과로 필터링하려면 먼저 서브쿼리나 CTE에서 rn 열을 만든 뒤 바깥 WHERE를 적용합니다.

1 FROMemployees 읽기
2 WHERE아직 rn 없음
3 SELECTROW_NUMBER 계산
4 outer WHERErn <= 3 가능
-- 오류
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
민준70001통과
서연62002통과
지우60003통과
도윤56004제외