SQL Server에서 SELECT TOP 명령은 하나 이상의 테이블에서 레코드를 조회할 때, 고정된 개수 또는 백분율을 기준으로 반환되는 레코드 수를 제한하는 데 사용됩니다. 대량의 데이터 중 상위 몇 건만 빠르게 확인해야 할 때 매우 유용한 구문입니다.
SELECT TOP 명령어 기본 문법
SELECT TOP (값) [PERCENT] [WITH TIES]
표현식
FROM 테이블
[WHERE 조건]
[ORDER BY 표현식 [ASC | DESC]];
매개변수 및 값 설명
TOP (값)
지정한 값만큼의 결과를 반환합니다. 예를 들어 TOP(10)은 결과 집합에서 첫 번째 10개 행을 가져옵니다.
PERCENT
선택 사항입니다. 이 옵션을 지정하면 전체 결과 집합에서 지정한 백분율에 해당하는 첫 번째 행들을 반환합니다. 예를 들어 TOP(10) PERCENT는 결과 집합의 상위 10%를 가져옵니다.
WITH TIES
선택 사항입니다. 이 절을 사용하면 결과 집합의 마지막 행과 동일한 값을 가진 행들도 함께 반환됩니다. 이 경우 TOP에서 허용하는 개수보다 더 많은 행이 반환될 수 있습니다.
표현식
조회하고자 하는 열 또는 계산된 값입니다.
테이블
레코드를 가져올 대상 테이블입니다. FROM 절에는 반드시 최소 1개의 테이블이 있어야 합니다.
WHERE 조건
선택 사항입니다. 레코드가 선택되기 위해 충족해야 하는 조건을 지정합니다.
ORDER BY 표현식
선택 사항입니다. 결과를 정렬할 때 사용합니다. ASC는 오름차순, DESC는 내림차순을 의미합니다.
예제 1 – TOP 키워드 사용하기
SELECT TOP(5)
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;
위 예제는 성(last name)이 'Anderson'인 직원 중에서 처음 5개 레코드를 조회합니다. 만약 그 외에 성이 Anderson인 레코드가 더 있더라도 SELECT 문에는 반환되지 않습니다.
여기에 WITH TIES 절을 추가하면 아래와 같이 수정할 수 있습니다.
SELECT TOP(5) WITH TIES
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;
이 예제는 결과 집합의 마지막 행과 동일한 값을 가진 나머지 행들까지 함께 반환합니다.
예제 2 – TOP PERCENT 키워드 사용하기
SELECT TOP(10) PERCENT
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;
이 예제는 성이 'Anderson'인 직원 중에서 직원 테이블(nhanvien)의 상위 10%에 해당하는 결과 집합을 반환합니다. 나머지 90%는 반환되지 않습니다.
SELECT TOP(10) PERCENT WITH TIES
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;
WITH TIES를 함께 사용하면 반환 결과에 결과 집합의 마지막 행과 동일한 값을 가진 행들이 포함됩니다. 따라서 실제 반환되는 결과 집합은 10%보다 많아질 수 있습니다.