정렬된 결과 제한

완료됨

TOP 절은 SELECT 절의 Microsoft 전용 확장입니다. TOP을 사용하면 반환할 행 수를 양의 정수나 모든 적격 행의 백분율로 지정할 수 있습니다. 행 수는 상수나 식으로 지정할 수 있습니다. TOP은 주로 ORDER BY와 함께 사용하지만 순서가 지정되지 않은 데이터에도 사용할 수 있습니다.

TOP 절 사용

ORDER BY와 함께 사용하는 TOP 절의 간단한 구문은 다음과 같습니다.

SELECT TOP (N) <column_list>
FROM <table_source>
WHERE <search_condition>
ORDER BY <order list> [ASC|DESC];

예를 들어 Production.Product 테이블에서 가장 비싼 제품 10개만 검색하려면 다음 쿼리를 사용합니다.

SELECT TOP 10 Name, ListPrice
FROM Production.Product
ORDER BY ListPrice DESC;

결과는 다음과 같을 수 있습니다.

속성

ListPrice

Road-150 Red, 62

3578.27

Road-150 Red, 44

3578.27

Road-150 Red, 48

3578.27

Road-150 Red, 52

3578.27

Road-150 Red, 56

3578.27

Mountain-100 Silver, 38

3399.99

Mountain-100 Silver, 42

3399.99

Mountain-100 Silver, 44

3399.99

Mountain-100 Silver, 48

3399.99

Mountain-100 Black, 38

3374.99

TOP 연산자에서는 ORDER BY 절을 사용하여 선택한 행에 유의미한 우선 순위를 지정합니다. TOP을 ORDER BY 없이 사용할 수 있지만, 이 경우 반환될 행을 예측할 방법이 없습니다. 위 예제의 경우 ORDER BY 절이 없으면 임의의 10개 주문이 반환될 수 있습니다.

WITH TIES 사용

TOP 키워드에서는 반환할 고정된 수의 행을 지정하는 것 외에도 WITH TIES 옵션을 사용하여 선택한 상위 N개 행에서 찾을 수 있는 값이 포함된 모든 행을 검색할 수 있습니다.

위 예제의 쿼리는 가격 기준 내림차순으로 정렬된 제품에서 처음 10개를 반환했습니다. 그러나 TOP 절에 WITH TIES 옵션을 추가하면 가장 비싼 상위 10개 제품에 포함될 수 있는 추가 행이 표시됩니다.

SELECT TOP 10 WITH TIES Name, ListPrice
FROM Production.Product
ORDER BY ListPrice DESC;

수정된 쿼리는 다음 결과를 반환합니다.

속성

ListPrice

Road-150 Red, 62

3578.27

Road-150 Red, 44

3578.27

Road-150 Red, 48

3578.27

Road-150 Red, 52

3578.27

Road-150 Red, 56

3578.27

Mountain-100 Silver, 38

3399.99

Mountain-100 Silver, 42

3399.99

Mountain-100 Silver, 44

3399.99

Mountain-100 Silver, 48

3399.99

Mountain-100 Black, 38

3374.99

Mountain-100 Black, 42

3374.99

Mountain-100 Black, 44

3374.99

Mountain-100 Black, 48

3374.99

WITH TIES를 포함할지 여부는 원본 데이터에 대한 지식수준, 원본 데이터에 고유 값이 있을 가능성, 작성하는 쿼리의 요구 사항에 따라 결정합니다.

PERCENT 사용

적격 행의 백분율을 반환하려면 고정된 수 대신 TOP에 PERCENT 옵션을 사용합니다.

SELECT TOP 10 PERCENT Name, ListPrice
FROM SalesLT.Product
ORDER BY ListPrice DESC;

PERCENT를 WITH TIES 옵션과 함께 사용할 수도 있습니다.

참고

행 수를 얻기 위해 TOP (N) PERCENT는 가장 가까운 정수로 반올림됩니다.

TOP 옵션은 많은 SQL Server 전문가가 특정 범위의 행만 검색하는 방법으로 사용합니다. 하지만 TOP을 사용할 때 다음 사항을 고려해야 합니다.

  • TOP은 T-SQL 전용입니다.
  • TOP는 그 자체로 행 건너뛰기를 지원하지 않습니다.
  • TOP에서는 ORDER BY 절을 사용하므로 TOP으로 필터링되는 행을 설정하는 정렬 순서와 출력 순서를 정하는 정렬 순서를 사용할 수 없습니다.