TopCount (DMX)

依照運算式指定的遞減次序順序,傳回指定數目的最頂部資料列。

語法

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

適用於

傳回資料表 (例如 <table column reference>) 的運算式,或者傳回資料表的函數。

傳回類型

<table expression>

備註

<rank expression> 引數提供的值決定 <table expression> 引數中提供之資料列的遞減次序順序,以及傳回之 <count> 引數中指定的最頂部資料列數。

TopCount 函數原本是在 SQL Server 2000 中為了啟用關聯預測所導入,而且通常會產生與包含 SELECT TOP 和 ORDER BY 子句之陳述式相同的結果。在 SQL Server 2005 和 SQL Server 2008 中,如果您使用 Predict (DMX) 函數 (可支援要傳回之預測數目的指定),您將會得到關聯預測的較佳效能。 

但是在一些狀況下,您可能仍然需要使用 TopCount。例如,DMX 不支援子 SELECT 陳述式中的 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

[!附註]

在此範例中,當做輸入提供的值包含單引號,因此必須在該值前面加上另一個單引號來逸出。如果您不確定插入逸出字元的語法,可以使用預測查詢產生器來建立查詢。當您從下拉式清單選取值時,就會為您插入所需的逸出字元。如需詳細資訊,請參閱<如何:在資料採礦設計師中建立單一查詢>。

範例結果:

模型

$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。

範例結果:

型號

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.29…

0.25…

Water Bottle

2866

0.19…

0.17…

Patch kit

2113

0.14…

0.13…

但是,這種類型的查詢可能會影響實際設定的效能。這是因為此查詢會從演算法傳回所有預測的集合、排序這些預測,並傳回前三個。

下列範例會提供替代陳述式,此陳述式會傳回相同的結果,但是執行速度則快得多。此範例會使用 Predict 函數取代 TopCount,該函數接受預測數目當做引數。此範例也會使用 $SUPPORT 關鍵字,直接擷取巢狀資料表資料行。

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

結果包含了根據支援值所排序的前三項預測。您可以使用 $PROBABILITY 或 $ADJUSTED_PROBABILITY 來取代 $SUPPORT,以傳回根據機率或調整過的機率所排名的預測。如需詳細資訊,請參閱<Predict (DMX)>。