TopCount (DMX)

按指定数量返回最前面的行,并以表达式指定的降序排列。

语法

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

适用范围

一个返回表的表达式,如 <表列引用>,或一个返回表的函数。

返回类型

<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 函数还不支持添加 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。

示例结果:

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 个产品。

以下示例提供返回相同结果但执行速度明显加快的替代语句。本示例将 TopCount 替换为 Predict 函数,后者接受大量预测作为参数。本示例还使用 $SUPPORT 关键字直接检索嵌套表列。

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

结果包含按支持值排序的前 3 个预测。您可以将 $SUPPORT 替换为 $PROBABILITY 或 $ADJUSTED_PROBABILITY,以便返回按概率或调整后的概率排名的预测。有关详细信息,请参阅 Predict (DMX)。