본문 바로가기
카테고리 없음

SQL Top N 쿼리: 오라클과 SQL Server에서의 활용법

by moment-love 2025. 2. 3.

SQL Top N 쿼리: 오라클과 SQL Server에서의 활용법

데이터베이스에서 Top N 쿼리는 특정 테이블에서 상위 N개의 데이터를 조회하는 데 사용됩니다.

예를 들어, 매출이 가장 높은 상위 5개의 상품을 찾거나, 급여가 가장 높은 직원 3명을 조회할 때 유용합니다.

하지만 오라클(Oracle)과 SQL Server에서 Top N 쿼리를 구현하는 방식이 다릅니다.

이번 글에서는 Top N 쿼리 개념, 오라클과 SQL Server에서의 사용법, 쿼리 실행 과정을 샘플 테이블과 함께 알아보겠습니다.


1. 샘플 테이블: Employees (직원 테이블)

다음과 같은 Employees 테이블이 있다고 가정합니다.

 

EmployeeID EmployeeName Department Salary
1 Alice Sales 7000
2 Bob IT 6500
3 Jane Marketing 6000
4 John Sales 5000
5 Tom HR 4500

 

목표

  • 급여(Salary)가 높은 상위 3명의 직원을 조회
  • ORDER BY Salary DESC로 정렬하여 상위 N개를 찾음

 


2. 오라클(Oracle)에서 Top N 쿼리

오라클에서는 FETCH FIRST N ROWS ONLY 또는 ROWNUM을 사용하여 Top N 데이터를 조회할 수 있습니다.

🔹 방법 1: FETCH FIRST N ROWS ONLY (Oracle 12c 이상 지원)

 

SELECT EmployeeName, Salary
FROM Employees
ORDER BY Salary DESC
FETCH FIRST 3 ROWS ONLY;

 

쿼리 실행 순서


1️⃣ FROM Employees → 모든 직원 데이터를 조회
2️⃣ ORDER BY Salary DESC → 급여가 높은 순으로 정렬
3️⃣ FETCH FIRST 3 ROWS ONLY → 정렬된 데이터에서 상위 3개 행만 반환

 

 

출력 결과

 

EmployeeName Salary
Alice 7000
Bob 6500
Jane 6000

 

FETCH 절은 최신 오라클 버전(12c 이상)에서만 사용 가능하며, 가독성이 좋음

 


🔹 방법 2: ROWNUM 사용 (오라클 전 버전 지원)

 
SELECT EmployeeName, Salary
FROM (
    SELECT EmployeeName, Salary
    FROM Employees
    ORDER BY Salary DESC
)
WHERE ROWNUM <= 3;

 

쿼리 실행 순서


1️⃣ 서브쿼리 실행 → Employees 테이블에서 Salary DESC로 정렬
2️⃣ ROWNUM <= 3 → 정렬된 데이터에서 상위 3개의 행만 선택

 

출력 결과 (동일)

 

EmployeeName Salary
Alice 7000
Bob 6500
Jane 6000

 

ROWNUM은 오라클의 오래된 방식이며, 서브쿼리 없이 사용할 경우 정확한 결과가 나오지 않을 수 있음.


3. SQL Server에서 Top N 쿼리

SQL Server에서는 TOP 또는 OFFSET FETCH를 사용하여 Top N 데이터를 조회할 수 있습니다.

🔹 방법 1: TOP N 사용

SELECT TOP 3 EmployeeName, Salary
FROM Employees
ORDER BY Salary DESC;

 

쿼리 실행 순서
1️⃣ FROM Employees → 모든 직원 데이터를 조회
2️⃣ ORDER BY Salary DESC → 급여가 높은 순으로 정렬
3️⃣ TOP 3 → 상위 3개의 행만 선택

 

 

출력 결과 (동일)

 

EmployeeName Salary
Alice 7000
Bob 6500
Jane 6000

 

TOP N은 SQL Server에서 가장 기본적인 방식이며, 직관적이고 빠름

 


🔹 방법 2: OFFSET FETCH 사용 (SQL Server 2012 이상)

 
SELECT EmployeeName, Salary
FROM Employees
ORDER BY Salary DESC
OFFSET 0 ROWS FETCH NEXT 3 ROWS ONLY;
 

쿼리 실행 순서


1️⃣ FROM Employees → 모든 직원 데이터를 조회
2️⃣ ORDER BY Salary DESC → 급여가 높은 순으로 정렬
3️⃣ OFFSET 0 ROWS → 첫 번째 행부터 시작
4️⃣ FETCH NEXT 3 ROWS ONLY → 상위 3개의 행만 반환

 

 

OFFSET을 활용하면 페이징 처리가 가능하며, 특정 위치부터 조회할 때 유용함


4. 오라클 vs SQL Server Top N 쿼리 비교

 

DBMS 사용 방법 버전 특징
Oracle FETCH FIRST N ROWS ONLY 12c 이상 최신 방식, 가독성 좋음
Oracle ROWNUM 사용 전 버전 지원 서브쿼리 필요
SQL Server TOP N 전 버전 지원 직관적이고 빠름
SQL Server OFFSET FETCH 2012 이상 페이징 처리 가능

 


5. 결론

오라클에서는 FETCH FIRST N ROWS ONLY 또는 ROWNUM을 사용하여 Top N 데이터를 조회할 수 있음.

 

SQL Server에서는 TOP 또는 OFFSET FETCH를 사용하여 상위 N개의 데이터를 쉽게 가져올 수 있음.


OFFSET FETCH를 활용하면 페이징 처리가 가능하며, 대량 데이터 처리에 유용함.

 

SQLD 자격증 대비를 위해 각 DBMS에서 Top N 쿼리의 차이를 이해하고, 실습을 통해 익숙해지는 것이 중요합니다!

반응형