TopPercent

Функция TopPercent возвращает в порядке убывания ранга верхние строки таблицы, сумма которых равна или превышает указанный процент.

Синтаксис

TopPercent(<table expression>, <rank expression>, <percent>)

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

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

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

<табличное выражение>

Замечания

Функция TopPercent возвращает верхние строки в порядке убывания ранга на основе вычисляемого значения аргумента <rank expression> для каждой строки так, чтобы сумма значений <rank expression> была равна или превышала процент, заданный аргументом <percent>. TopPercent возвращает наименьшее число возможных элементов, соответствующих указанному значению процента.

Примеры

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

Чтобы понять, как работает функция TopPercent, лучше будет сначала выполнить прогнозирующий запрос, который возвращает только вложенную таблицу.

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

Функция TopPercent принимает результаты этого запроса и возвращает строки с наибольшими значениями, сумма которых составляет заданную процентную долю.

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

Первый аргумент функции TopPercent — это имя столбца таблицы. В этом примере для возврата вложенной таблицы нужно вызвать функцию Predict и использовать аргумент INCLUDE_STATISTICS.

Второй аргумент функции TopPercent — это столбец вложенной таблицы, используемый для упорядочения результатов. В этом примере параметр INCLUDE_STATISTICS возвращает столбцы $SUPPORT, $PROBABILTY и $ADJUSTED PROBABILITY. В этом примере используется столбец $SUPPORT, поскольку значения в нем не являются дробными и их легче проверять.

Третий аргумент функции TopPercent указывает долю в процентах и имеет тип double. Чтобы получить строки для верхних продуктов, стоимость которых составляет 50 процентов от общей поддержки, необходимо ввести 50.

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

Модель

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.29…

0.25…

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

2866

0.19…

0.17…

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

2113

0.14…

0.13…

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

1992

0.133…

0.12…

Примечание.   Этот пример приведен только для иллюстрации применения функции TopPercent. В зависимости от размера набора данных выполнение данного запроса может занять значительное время.