Прежде всего вы должны использовать toppercent, а не bottomcount.Вы хотите, чтобы минимальная заработная плата человека, который не находится в последних 5%, не была последней 5. Toppercent даст вам верхние 95%.
Во-вторых, для фильтрации 0 вы можете использовать следующий синтаксис
toppercent (
filter([Localization].[Type].&[center], [Measures].[MinEarnings]>0)
, 95, [Measures].[MinEarnings])
Даже сейчас размещение кода в предложении where может не сработать, но попробуйте.Я бы посоветовал вам переместить топперцентр в строки, затем заказать его, а затем взять top1
topcount(
order(
toppercent (
filter([Localization].[Type].&[center], [Measures].[MinEarnings]>0)
,95, [Measures].[MinEarnings])
,[Measures].[MinEarnings],asc)
,1)
У меня есть пример, который дает минимальный объем продаж городов, обратите внимание, что я заменил нули на 0, чтобы сделатькак можно ближе к вашему случаю
с участником [Меры]. [Сумма Интернет-продаж2], как случай, когда ([Меры]. [Сумма Интернет-продаж]) = ноль, а затем 0, еще [Меры]. [ИнтернетСумма продаж] end
select [Measures].[Internet Sales Amount2]
on columns ,
topcount(order(toppercent(filter([Customer].[City].[City],[Measures].[Internet Sales Amount2]>0),95,[Measures].[Internet Sales Amount2]),[Measures].[Internet Sales Amount2],asc),1)
on rows
from [Adventure Works]
where [Customer].[Country].&[Canada]
на рисунке ниже - результат перед topcount 1