TOP-N 쿼리는 데이터의 상위(또는 하위) N개의 행을 가져오는 SQL 패턴입니다. Oracle에서는 ROWNUM, ROW_NUMBER(), FETCH FIRST N ROWS ONLY 등을 사용하여 특정 개수의 레코드를 조회할 수 있습니다.
TOP-N 쿼리는 다음과 같은 목적에서 사용됩니다.
Oracle에서 제공하는 HR(Human Resources) 샘플 스키마를 사용 함
SELECT employee_id, first_name, last_name, salary
FROM (
SELECT employee_id, first_name, last_name, salary
FROM employees
ORDER BY salary DESC
)
WHERE ROWNUM <= 5;
✅ 설명:
ROWNUM을 이용해 상위 5명의 데이터를 추출합니다.ROWNUM은 정렬된 결과에 번호를 매긴 후 필터링합니다.SELECT employee_id, first_name, last_name, department_id, salary
FROM (
SELECT employee_id, first_name, last_name, department_id, salary,
ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk
FROM employees
)
WHERE rnk = 1;