다음을 통해 공유


TopCount(DMX)

식에서 지정한 수만큼 맨 위 행을 내림차순으로 반환합니다.

구문

TopCount(<table expression>, <rank expression>, <count>)

적용 대상

<table column reference>와 같은 테이블을 반환하는 식 또는 테이블을 반환하는 함수입니다.

반환 형식

<table expression>

주의

<rank expression> 인수가 제공한 값에 따라 <table expression> 인수에 제공된 행의 내림차순이 결정되며 <count> 인수에 지정된 수만큼 맨 위 행이 반환됩니다.

TopCount 함수는 원래 연결 예측을 사용하고 일반적으로 SELECT TOP 및 ORDER BY 절을 포함하는 문으로 동일한 결과를 생성하기 위해 SQL Server 2000에 도입되었습니다. SQL Server 2005 및 SQL Server 2008에서 연결 예측에 대해 더 나은 성능을 얻으려면 Predict (DMX) 함수를 사용하면 됩니다. 이 함수는 많은 예측이 반환되도록 지정할 수 있습니다. 

그러나 TopCount를 사용해야 하는 상황이 있을 수 있습니다. 예를 들어 DMX는 하위 선택 문에서 TOP 한정자를 지원하지 않습니다. 또한 PredictHistogram(DMX) 함수는 TOP 추가를 지원하지 않습니다.

다음 예에서는 기본 데이터 마이닝 자습서를 사용하여 작성하는 연결 모델에 대한 예측 쿼리입니다. 쿼리는 동일한 결과를 반환하지만 첫 번째 예에서는 TopCount를 사용하며 두 번째 예에서는 Predict 함수를 사용합니다.

우선 중첩 테이블만 반환하는 예측 쿼리를 실행해 보면 TopCount의 작동 방식을 이해하는 데 도움이 됩니다.

SELECT Predict ([Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 10)
FROM 
     [Association]
NATURAL PREDICTION JOIN
SELECT (SELECT 'Women''s Mountain Shorts' as [Model]) AS [v Assoc Seq Line Items]) AS t

[!참고]

이 예에서 입력으로 제공된 값에는 작은따옴표가 들어 있으므로 작은따옴표를 앞에 추가하여 이스케이프해야 합니다. 이스케이프 문자를 삽입하는 구문을 모르는 경우 예측 쿼리 작성기를 사용하여 쿼리를 만들 수 있습니다. 드롭다운 목록에서 값을 선택하면 필요한 이스케이프 문자가 자동으로 삽입됩니다. 자세한 내용은 방법: 데이터 마이닝 디자이너에서 단일 쿼리 작성을 참조하십시오.

예 결과:

Model

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.291283016

0.252695851

Water Bottle

2866

0.192620472

0.175205052

Patch kit

2113

0.142012232

0.132389356

Mountain Tire Tube

1992

0.133879965

0.125304948

Mountain-200

1755

0.117951475

0.111260823

Road Tire Tube

1588

0.106727603

0.101229538

Cycling Cap

1473

0.098998589

0.094256014

Fender Set - Mountain

1415

0.095100477

0.090718432

Mountain Bottle Cage

1367

0.091874454

0.087780332

Road Bottle Cage

1195

0.080314537

0.077173962

TopCount 함수는 이 쿼리의 결과를 받아 지정된 수의 최소값 행을 반환합니다.

SELECT 
TopCount
    (
    Predict ([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,10),
    $SUPPORT,
    3)
FROM 
     [Association]
NATURAL PREDICTION JOIN
(SELECT (SELECT 'Women''s Mountain Shorts' as [Model]) AS [v Assoc Seq Line Items]) AS t

TopCount 함수에 대한 첫 번째 인수는 테이블 열의 이름입니다. 이 예에서는 Predict 함수를 호출하고 INCLUDE_STATISTICS 인수를 사용하여 중첩 테이블을 반환합니다.

TopCount 함수에 대한 두 번째 인수는 중첩 테이블에서 결과를 정렬하는 데 사용할 열입니다. 이 예에서 INCLUDE_STATISTICS 옵션은 $SUPPORT, $PROBABILTY 및 $ADJUSTED PROBABILITY 열을 반환합니다. 이 예에서는 $SUPPORT를 사용하여 결과의 등급을 지정합니다.

TopCount 함수에 대한 세 번째 인수는 행 수를 정수로 반환하도록 지정합니다. $SUPPORT에서 정렬한 대로 최상위 3개 제품을 얻으려면 3을 입력합니다.

예 결과:

Model

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.29…

0.25…

Water Bottle

2866

0.19…

0.17…

Patch kit

2113

0.14…

0.13…

그러나 이 유형의 쿼리는 프로덕션 설정의 성능에 영향을 미칠 수 있습니다. 이는 이 쿼리가 알고리즘의 모든 예측 집합을 반환하고, 이러한 예측을 정렬하며 최상위 3개를 반환하기 때문입니다.

다음 예에서는 동일한 결과를 반환하지만 매우 빠르게 실행되는 대체 문을 제공합니다. 이 예에서는 TopCountPredict 함수로 대체하며 이 함수는 많은 예측을 인수로 허용합니다. 또한 이 예에서는 $SUPPORT 키워드를 사용하여 중첩 테이블 열을 직접 검색합니다.

SELECT Predict ([Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 3, $SUPPORT)

결과에는 지원 값으로 정렬된 최상위 3개 예측이 포함됩니다. $SUPPORT를 $PROBABILITY 또는 $ADJUSTED_PROBABILITY로 대체하여 확률 또는 조정된 확률로 등급이 지정된 예측을 반환할 수 있습니다. 자세한 내용은 Predict (DMX)를 참조하십시오.