2014-01-07 2 views
2

У меня есть таблица в SSRS 2008 R2. Столбцы - это отделы. Строки различной статистики для отделов.Вычисление взвешенного среднего в таблице в SSRS 2008 R2

Одна из строк должна отображать среднюю скорость ответа на входящие вызовы. У меня есть данные в моем наборе данных: AvgSoA.

У меня также есть поле для общего количества ответных звонков: NumOfCalls.

Последний столбец Tablix суммирует все отделы.

Я не знаю, как рассчитать средневзвешенную скорость ответа.

Конечно, я знаю, что такое средневзвешенное значение ... Я просто не знаю, как вычислить его в последнем столбце Tablix, так как я не знаю, сколько отделов будет «отображаться» в отчете ,

Спасибо.

+0

Можете ли вы добавить некоторые простые примерные данные и ожидаемые результаты? –

ответ

3

На самом деле не имеет значения, как много отделов появляются, потому что отделы не участвуют в средневзвешенном расчете. Вам нужно значение для единицы, в вашем случае AvgSoA, а также количество вхождений этого значения в вашем случае NumOfCalls. Для взвешенного среднего вы суммируете их продукты, затем делитесь на сумму вхождений.

Поэтому в вашем наборе данных создайте поле для NumOfCalls раз AvgSoA - это ваш продукт, назовем его Weight. Теперь у нас есть продукты в ряд, так что в общем ряде мы просто должны подвести Weight и разделить на сумме NumOfCalls, чтобы получить взвешенное среднее:

=SUM(Fields!Weight.Value)/SUM(Fields!NumOfCalls.Value) 
+0

Великий мышления, Крис. Большое спасибо! – Amarundo

0

я имел такую ​​же проблему, как Sum делает обрабатывать нуль значения в вашем наборе данных правильно. Чтобы исправить это, я нашел, что лучше всего делать нулевые проверки всех ваших входных значений. Если я использую свой пример:

Sum((IIF(IsNothing(Fields!NumOfCalls.Value),0,Fields!NumOfCalls.Value)/Sum(IIF(IsNothing(Fields!NumOfCalls.Value),0,Fields!NumOfCalls.Value)))*IIF(IsNothing(Fields!AvgSoA.Value),0,Fields!AvgSoA.Value)) 

Я знаю, что это выглядит громоздким, но если убрать проверку все нуля это:

Sum((Fields!NumOfCalls.Value/Sum(Fields!NumOfCalls.Value))*Fields!AvgSoA.Value) 

Я не рекомендую удалить нуль проверки, хотя, как любое пустое значение в данных будет отключен ваш ответ.

+0

Вы можете использовать пользовательский код, чтобы решить этот вопрос тоже: Public Function Делитель (ByVal дивидендной As Double, ByVal делитель As Double) Если IsNothing (делители) Или Делитель = 0 Возврата 0 Else Вернуться Дивиденд/Делитель End If Конечная функция И в вашем выражении используйте Code.Divider (Fields! Dividend.Value, Fields! Divisor.Value) – dLight

Смежные вопросы