TopPercent(MDX)

按降序排序集合,返回一组值最高的元组,其累计总数等于或大于指定百分比。

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美元)