按降序排序集合,返回一组值最高的元组,其累计总数等于或大于指定百分比。
Syntax
TopPercent(Set_Expression, Percentage, Numeric_Expression)
Arguments
Set_Expression
一个有效的多维表达式(MDX)表达式,返回集合。
百分比
一个有效的数值表达式,指定要返回的元组百分比。
Important
百分比 必须是正值;负值会产生错误。
Numeric_Expression
一个有效的数值表达式,通常是多维表达式(MDX)表达式,表示返回一个数字的单元坐标。
Remarks
TopPercent函数计算在指定集合上计算的数值表达式的总和,按降序排序。 函数随后返回总值中占总数百分比至少达到指定百分比的元素。 该函数返回集合中累计总数至少达到指定百分比的最小子集。 返回的元素按大小排序。
Warning
如果 Numeric_Expression 返回任何负值, TopPercent 只返回一行。
详见第二个示例,详细介绍了这种行为。
Important
与 BottomPercent 函数类似, TopPercent 函数总是打破层级结构。
示例
A. 回报TopPercent
以下示例回归了帮助经销商进入自行车类别销售前% 十名的最佳城市。 结果按销售价值最高的城市从下降排序。
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])
上述表达式得到以下结果:
| 城市 | 经销商销售金额 |
|---|---|
| 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])
B. 理解负值的影响
以下攻略将帮助理解负值在 Numeric_Expression中的影响。 首先,让我们建立一些背景,以便呈现这种行为。
以下查询返回一张转售商“销售金额”、“总产品成本”和“毛利润”的表格,按利润由高至低排序。 请注意,利润仅有负值;因此,最小的损失出现在顶部。
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]
上述查询返回如下结果;中间部分的行被去除以便阅读。
| 观光自行车 | 经销商销售金额 | 经销商总产品成本 | 转售商毛利 |
|---|---|---|---|
| 巡回赛-2000年蓝色,50 | 157,444.56美元 | 163,112.57美元 | (5,668.01美元) |
| 巡回赛——2000年蓝色,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黄,46 | 1,016,312.83美元 | 1,234,454.27美元 | (218,141.44美元) |
| Touring-1000黄,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 中存在负值,只有一行返回。
| 观光自行车 | 经销商销售金额 | 经销商总产品成本 | 转售商毛利 |
|---|---|---|---|
| 巡回赛-2000年蓝色,50 | 157,444.56美元 | 163,112.57美元 | (5,668.01美元) |