SQL Select Top
SQL SELECT TOP: 상위 행 선택
SQL SELECT TOP 절은 대량의 데이터에서 상위 몇 개의 행만 선택하고자 할 때 사용됩니다. TOP
절은 테이블에서 쿼리 결과의 행 수를 제한하며,
특정 조건에 맞는 데이터를 상위부터 지정된 개수만큼 조회할 수 있습니다. 상위 n개 행을 반환할 때 SELECT TOP 또는 LIMIT,
FETCH FIRST와 같은 구문을 사용합니다. 이러한 절은 대량의 데이터를 처리하는 상황에서 유용하게 사용됩니다.
다만, SELECT TOP 구문은 SQL Server와 MS Access에서 주로 사용되며, MySQL, PostgreSQL, Oracle 등의 다른 데이터베이스에서는 다른 문법이 사용됩니다.
1. 기본 SELECT TOP 문법 (SQL Server)
SQL Server에서 SELECT TOP 절을 사용하는 기본 문법은 다음과 같습니다:
SELECT TOP (n) 열이름1, 열이름2, ...
FROM 테이블이름
WHERE 조건
ORDER BY 열이름 [ASC|DESC];
- n: 반환할 행(row)의 수 또는 백분율(%).
- 열이름: 조회할 열의 이름.
- 테이블이름: 데이터를 조회할 테이블의 이름.
- WHERE 조건: 데이터를 필터링할 조건(선택적).
- ORDER BY: 데이터를 정렬하는 기준(선택적).
2. SQL SELECT TOP 예제
2.1 상위 5개 행 조회
다음은 employees
테이블에서 상위 5명의 직원을 조회하는 예제입니다.
SELECT TOP 5 name, salary
FROM employees
ORDER BY salary DESC;
이 쿼리는 급여가 높은 순으로 상위 5명의 직원을 조회합니다.
결과 예시:
name | salary |
---|---|
John Doe | 8000 |
Jane Roe | 7500 |
Alice | 7000 |
Bob | 6800 |
Charlie | 6700 |
2.2 백분율로 상위 10% 행 조회
다음은 employees
테이블에서 상위 10%의 직원을 조회하는 예제입니다.
SELECT TOP 10 PERCENT name, salary
FROM employees
ORDER BY salary DESC;
이 쿼리는 직원들의 급여를 내림차순으로 정렬하고 상위 10%의 직원을 반환합니다.
3. MySQL에서 상위 행 선택: LIMIT
MySQL에서는 SELECT TOP 대신 LIMIT 절을 사용하여 상위 n개의 행을 선택합니다.
3.1 상위 5개 행 조회 (MySQL)
SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5;
이 쿼리는 급여가 높은 순서로 상위 5명의 직원을 반환합니다.
3.2 3번째부터 상위 5개 행 조회 (MySQL)
LIMIT 절을 사용하여 특정 위치부터 상위 n개의 행을 선택할 수 있습니다. 첫 번째 값은 시작 위치, 두 번째 값은 반환할 행의 개수입니다.
SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 2, 5;
이 쿼리는 3번째 행부터 상위 5개의 직원 데이터를 반환합니다.
4. PostgreSQL 및 Oracle에서 상위 행 선택
4.1 PostgreSQL: FETCH FIRST
PostgreSQL에서는 FETCH FIRST 절을 사용하여 상위 n개의 행을 조회할 수 있습니다.
SELECT name, salary
FROM employees
ORDER BY salary DESC
FETCH FIRST 5 ROWS ONLY;
4.2 Oracle: ROWNUM 또는 FETCH FIRST
Oracle에서는 ROWNUM 또는 FETCH FIRST를 사용할 수 있습니다.
SELECT name, salary
FROM employees
WHERE ROWNUM <= 5
ORDER BY salary DESC;
또는,
SELECT name, salary
FROM employees
ORDER BY salary DESC
FETCH FIRST 5 ROWS ONLY;
5. 실전 예제
예제 1: 급여가 높은 상위 3명의 직원 조회 (SQL Server)
SELECT TOP 3 name, salary
FROM employees
ORDER BY salary DESC;
예제 2: 급여가 낮은 상위 2명의 직원 조회 (MySQL)
SELECT name, salary
FROM employees
ORDER BY salary ASC
LIMIT 2;
예제 3: 급여가 높은 상위 10% 직원 조회 (SQL Server)
SELECT TOP 10 PERCENT name, salary
FROM employees
ORDER BY salary DESC;
요약
SQL SELECT TOP 절은 SQL Server에서 데이터를 조회할 때 반환되는 행의 개수를 제한하는 데 사용됩니다. MySQL에서는 LIMIT 절, PostgreSQL에서는 FETCH FIRST, Oracle에서는 ROWNUM이나 FETCH FIRST 절을 사용하여 상위 n개의 데이터를 조회할 수 있습니다. 이러한 구문은 대량의 데이터를 다루거나, 결과를 제한하여 조회 성능을 높일 때 유용합니다.