Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сортирует набор в убывающем порядке и возвращает набор кортежей с наибольшими значениями, совокупное значение которых равно указанному проценту или больше него.
Синтаксис
TopPercent(Set_Expression, Percentage, Numeric_Expression)
Аргументы
Set_Expression
Допустимое многомерное выражение, возвращающее набор.Percentage
Допустимое числовое выражение, указывающее процент возвращаемых кортежей.
Важно!Параметр Percentage должен иметь положительное значение. Отрицательные значения вызывают ошибку.
Numeric_Expression
Допустимое числовое выражение (обычно многомерное выражение координат ячейки, возвращающее число).
Замечания
Функция TopPercent вычисляет сумму указанного числового выражения, рассчитанного для указанного набора, отсортированного в возрастающем порядке. Затем функция возвращает элементы с наибольшими значениями, доля суммы которых в суммарном значении меньше указанного процента или равна ему. Эта функция возвращает самый маленький поднабор набора, совокупное значение которого равно по меньшей мере заданному проценту. Возвращенные элементы упорядочены по убыванию.
Предупреждение
Если выражение Numeric_Expression возвращает любое отрицательное значение, то функция TopPercent возвращает только 1 (одну) строку.
Подробное представление такой особенности см. во втором примере.
Важно! |
|---|
Подобно функции BottomPercent, функция TopPercent всегда выполняет вычисления с нарушением иерархии. |
Пример
В следующем примере возвращаются лучшие города, дающие вклад в 10 % от продаж посредников в категории Bike. Результат сортируется по убыванию, начиная с города с максимальной суммой продаж.
SELECT [Measures].[Reseller Sales Amount] ON 0,
TopPercent
({[Geography].[Geography].[City].Members}
, 10
, [Measures].[Reseller Sales Amount]
) ON 1
FROM [Adventure Works]
WHERE([Product].[Product Categories].[Bikes])
Приведенное выше выражение дает следующие результаты.
Reseller Sales Amount |
|
|---|---|
Toronto |
$3,508,904.84 |
London |
$1,521,530.09 |
Seattle |
$1,209,418.16 |
Paris |
$1,170,425.18 |
Исходный набор данных можно получить следующим запросом, возвращающим 588 строк:
SELECT [Measures].[Reseller Sales Amount] ON 0,
Order
({[Geography].[Geography].[City].Members}
, [Measures].[Reseller Sales Amount]
, BDESC
) ON 1
FROM [Adventure Works]
WHERE([Product].[Product Categories].[Bikes])
Пример
Действие отрицательных значений в Numeric_Expression подробно описано в следующем пошаговом руководстве. Сначала нужно построить контекст, где представлен этот эффект.
Следующий запрос возвращает таблицу со столбцами «Sales Amount», «Total Product Cost» и «Gross Profit» для посредников с сортировкой по убыванию прибыли. Заметьте, что для прибыли заданы только отрицательные значения, поэтому сверху будет отображаться минимальный убыток.
SELECT { [Measures].[Reseller Sales Amount], [Measures].[Reseller Total Product Cost], [Measures].[Reseller Gross Profit] } ON columns
, ORDER( [Product].[Product Categories].[Bikes].[Touring Bikes].children, [Measures].[Reseller Gross Profit], BDESC ) ON rows
FROM [Adventure Works]
Этот запрос возвращает следующие результаты. Средние строки удалены для упрощения чтения.
Reseller Sales Amount |
Reseller Total Product Cost |
Reseller Gross Profit |
|
|---|---|---|---|
Touring-2000 Blue, 50 |
$157,444.56 |
$163,112.57 |
($5,668.01) |
Touring-2000 Blue, 46 |
$321,027.03 |
$333,021.50 |
($11,994.47) |
Touring-3000 Blue, 62 |
$87,773.61 |
$100,133.52 |
($12,359.91) |
… |
… |
… |
… |
Touring-1000 Yellow, 46 |
$1,016,312.83 |
$1,234,454.27 |
($218,141.44) |
Touring-1000 Yellow, 60 |
$1,184,363.30 |
$1,443,407.51 |
($259,044.21) |
Если нужно представить первые 100 % велосипедов по прибыльности, следует составить следующий запрос:
SELECT { [Measures].[Reseller Sales Amount], [Measures].[Reseller Total Product Cost], [Measures].[Reseller Gross Profit] } ON columns
, TOPPERCENT( [Product].[Product Categories].[Bikes].[Touring Bikes].children, 100,[Measures].[Reseller Gross Profit] ) ON rows
FROM [Adventure Works]
Заметьте, что в запросе указан размер выборки 100 % и должны возвращаться все строки. Однако, поскольку в выражении Numeric_Expression есть отрицательные значения, возвращается только одна строка.
Reseller Sales Amount |
Reseller Total Product Cost |
Reseller Gross Profit |
|
|---|---|---|---|
Touring-2000 Blue, 50 |
$157,444.56 |
$163,112.57 |
($5,668.01) |
См. также
Справочник
Справочник по функциям многомерных выражений (многомерные выражения)