Поделиться через


TopCount

Возвращает заданное в инструкции количество верхних строк в порядке убывания их ранга как указано в выражении.

Синтаксис

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

Область применения

Выражение, возвращающее таблицу (например, <table column reference>), или функция, возвращающая таблицу.

Тип возвращаемых данных

<table expression>

Замечания

Значение, задаваемое аргументом <ранжирующего выражения>, определяет порядок убывания ранга строк, содержащихся в аргументе <табличного выражения>. При этом возвращается количество верхних строк, заданных аргументом <счета>.

Функция TopCount впервые появилась в SQL Server 2000 и была предназначена для выполнения ассоциативных прогнозов. Как правило, она имела тот же результат, что и инструкция с предложениями SELECT TOP и ORDER BY. В SQL Server 2005 и SQL Server 2008 производительность ассоциативных прогнозов повышена за счет использования функции Predict (расширения интеллектуального анализа данных), которая поддерживает указание количества возвращаемых прогнозов.

Однако при этом может возникнуть необходимость использования TopCount. Например, расширения интеллектуального анализа данных не поддерживают квалификатор 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
ПримечаниеПримечание

В этом примере значение, заданное в качестве входных данных, содержит знак одинарной кавычки, а значит, его нужно экранировать и добавить перед ним еще один знак кавычки. При отсутствии уверенности в синтаксических конструкциях, используемых для вставки экранирующего символа, запросы можно создавать с помощью построителя прогнозирующих запросов. При выборе значения из раскрывающегося списка необходимый экранирующий символ вставляется автоматически. Дополнительные сведения см. в разделе Как создать одноэлементный запрос в конструкторе интеллектуального анализа данных.

Пример результатов:

Модель

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.291283016

0.252695851

Фляга для воды

2866

0.192620472

0.175205052

Ремонтный комплект

2113

0.142012232

0.132389356

Камера шины для велосипеда Mountain

1992

0.133879965

0.125304948

Велосипед Mountain-200

1755

0.117951475

0.111260823

Камера шины для шоссейного велосипеда

1588

0.106727603

0.101229538

Велосипедная шапочка

1473

0.098998589

0.094256014

Набор крыльев для велосипедов Mountain

1415

0.095100477

0.090718432

Держатель фляги для велосипеда Mountain

1367

0.091874454

0.087780332

Держатель фляги для шоссейного велосипеда

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…

Фляга для воды

2866

0.19…

0.17…

Ремонтный комплект

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 (расширения интеллектуального анализа данных).