计算SSRS 2008 R2中Tablix的加权平均值

时间:2014-01-07 18:31:28

标签: reporting-services ssrs-2008

我在SSRS 2008 R2中有一个Tablix。列是部门。这些行是各部门的不同统计数据。

其中一行必须显示来电的平均应答速度。我已在我的数据集中提交了该文件:AvgSoA

我还有一个已接听电话总数的字段:NumOfCalls

Tablix的最后一栏总结了所有部门。

我不知道如何计算加权平均速度来回答。

当然我知道加权平均值是什么......我只是不知道如何在Tablix的最后一栏中计算它,因为我不知道报告中会显示多少个部门。

感谢。

2 个答案:

答案 0 :(得分:3)

实际上有多少部门出现并不重要,因为部门没有参与加权平均计算。您需要的是一个单位的值,在您的情况下为AvgSoA,以及该值NumOfCalls中该值的出现次数。对于加权平均值,您将这些乘积相加,然后除以出现次数的总和。

因此,在您的数据集中为NumOfCalls AvgSoA创建一个字段 - 这是您的产品,我们称之为Weight。现在我们每行都有我们的产品,所以在总行中我们只需要求和Weight并除以NumOfCalls之和得到加权平均值:

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

答案 1 :(得分: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))

我知道这看起来很麻烦,但如果你删除null检查,那就是:

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

我不建议删除空检查,因为数据中的任何空值都会通过你的答案。