1. TOP-N 쿼리 정의

TOP-N 쿼리는 데이터의 상위(또는 하위) N개의 행을 가져오는 SQL 패턴입니다. Oracle에서는 ROWNUM, ROW_NUMBER(), FETCH FIRST N ROWS ONLY 등을 사용하여 특정 개수의 레코드를 조회할 수 있습니다.


2. TOP-N 쿼리 사용 목적

TOP-N 쿼리는 다음과 같은 목적에서 사용됩니다.

  1. 순위 기반 데이터 조회: 예를 들어, 상위 10명의 직원, 매출 상위 5개 제품 등을 조회할 때 사용합니다.
  2. 페이징(Paging) 처리: 대량의 데이터를 페이지별로 나누어 보여줄 때 활용됩니다.
  3. 최대값/최소값 조회: 특정 기준으로 가장 높은 값 또는 낮은 값을 가진 데이터를 가져올 때 사용됩니다.
  4. 퍼포먼스 최적화: 전체 데이터를 불러오는 것보다 필요한 상위 N개만 가져와서 성능을 개선할 수 있습니다.

3. TOP-N 쿼리 사용 예제 (HR 샘플 스키마 적용)

Oracle에서 제공하는 HR(Human Resources) 샘플 스키마를 사용 함

예제 1: 급여 상위 5명의 직원 조회

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;

설명:


예제 2: 부서별 급여 1위 직원 조회 (ROW_NUMBER() 활용)

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;