我在SSRS 2008 R2中有一个Tablix。列是部门。这些行是各部门的不同统计数据。
其中一行必须显示来电的平均应答速度。我已在我的数据集中提交了该文件:AvgSoA
。
我还有一个已接听电话总数的字段:NumOfCalls
。
Tablix的最后一栏总结了所有部门。
我不知道如何计算加权平均速度来回答。
当然我知道加权平均值是什么......我只是不知道如何在Tablix的最后一栏中计算它,因为我不知道报告中会显示多少个部门。
感谢。
答案 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)
我不建议删除空检查,因为数据中的任何空值都会通过你的答案。