【问题标题】:Average of all values Except 0所有值的平均值 除了 0
【发布时间】:2013-08-01 22:31:23
【问题描述】:

我有一份我在 SSRS 2008 中设计的报告。我有一行包含几个值。这基本上是一个调查表,其中有从 1 到 5 的值。一些值是空白或 N/A(如果他们不回答)。但是,当我计算值的平均值时,它包括该特定值。我认为它是0。所以


   Average of (4, 5,4,4,5,2,3, ,5) = 3.56 instead of 4.00.

您能否告诉我如何在不考虑空白值的情况下计算这些值的平均值。

谢谢

【问题讨论】:

    标签: reporting-services ssrs-2008


    【解决方案1】:

    您可以向数据集添加计算字段以过滤掉不需要的值。然后您可以使用正则表达式使其更具可读性。以下是计算字段表达式的示例:

    =iif(Fields!Score.Value > 0, Fields!Score.Value, Nothing)
    

    现在您可以简单地引用=Avg(Fields!FilteredScore.Value),它会按需要工作。

    【讨论】:

    • 这种方法对我来说非常有效。谢谢史蒂文!
    【解决方案2】:

    我找到了以下解决方案来解决我的问题:


           =SUM(Fields!Score.Value)/Sum(iif(Fields!Score<>0,1,0))
    

    【讨论】:

      【解决方案3】:

      您需要创建自己的函数来完成任务,而不是使用内置的平均函数。

      数学平均值 =(所有答案的总和)/(所有答案的计数)

      对于您的情况,您需要修改面额以排除所有空白和 N/A 值。

      New Avg func = (sum of all answers)/((count of all answers)-(count of all answers where it is blank or N/A))

      SSRS equivalent:
      =SUM(Fields!SurveyAnswer.Value)/
      (Count(Fields!SurveyAnswer.Value)-
      Count(IIF(Fields!SurveyAnswer="" OR UCASE(Fields!SurveyAnswer)="N/A", 1, **NOTHING**)))
      
      OR
      
      =SUM(Fields!SurveyAnswer.Value)/(Count(Fields!SurveyAnswer.Value)-
      SUM(IIF(Fields!SurveyAnswer="" OR UCASE(Fields!SurveyAnswer)="N/A", 1, 0)))
      

      HTH。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-09
        • 2016-02-20
        • 2013-03-21
        • 2021-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-05
        相关资源
        最近更新 更多