SSRS StDevP 函数是一个聚合函数,用于返回给定表达式中所有非空值的总体标准差。本文将通过示例介绍如何使用 StDevP 函数来计算特定组或整个表中的项目的总体标准差。
SSRS StDevP 函数用于计算默认范围内的所有记录的总体标准差的语法如下。
StDevP(Fields!SalesAmount.Value)
要为每个组、表或数据集查找总体标准差值,请将名称替换为组、Tablix 或数据集的名称。
StDevP(Fields!SalesAmount.Value, "Name")
StDevP(Fields!SalesAmount.Value, "Name", Recursive)
为了演示 SSRS StDevP 函数,我们使用了下面的员工表,该表按职业分组有 15 条记录。下图显示了表中记录的情况。

SSRS StDevP 函数示例
右键单击详细信息行中的任何字段,选择“插入行”,然后选择“组外 - 下方”选项以添加新行。接下来,合并前三列并将“每个组的总体标准差”作为文本添加。为了帮助您理解报表,我建议您参考 SSRS 中的“图表”、“表”、“分组”和“格式化表”文章。
编写 SSRS StDevP 函数有多种方法。第一种方法是单击单元格并选择 YearlyIncome 字段。由于它是默认的聚合函数,它将 Sum 函数赋给它。因此,选择“文本(Sum(YearlyIncome))”,选择“汇总方式”,然后单击 StDevP 函数。它会在内部写入以下表达式
=StDevP(Fields!YearlyIncome.Value)

第二种方法是右键单击“Sales”下方的文本框,然后选择“Expression”选项。这将打开以下表达式窗口,允许您编写更复杂的 SSRS StDevP 函数以及范围。下面的代码计算所有销售项目的总体标准差。
=StDevP(Fields!Sales.Value)

请单击预览选项卡以查看员工年收入和销售额的总体标准差。如果您观察报表,默认情况下,它会在每个职业组中显示总体标准差值,因为这是默认范围。有关更多函数 >> 点击此处!

SSRS StDevP 函数范围示例
为此,在“Sales”右侧添加一个新列,并将标题命名为“StDevP Sale”。接下来,右键单击文本框并选择“Expression”。
下面的 StDevP 函数返回的结果与“每个组的总体标准差值”行所示的结果相同。但是,由于我们手动更改了 StDevP 函数的范围,因此您拥有了更多的控制权。
=StDevP(Fields!Sales.Value, "Occupation")
下面的表达式将每个职业组中所有项目的总体标准差值从各个员工的销售额中减去。请记住,“Occupation”是组名。接下来,我们使用 0.000;-0.000;‘-’格式化了数字。
=Fields!Sales.Value - StDevP(Fields!Sales.Value, "Occupation")

根据报表预览,Christy Mehta 的 StDev Sale:24.99(销售额)– 15.183(文职人员总体标准差)= 9.806。
如前所述,要计算整个表或所有员工的总体标准差,您必须将组(“Occupation”)替换为表名。让我添加一个在组外的新行,并将其命名为“每表的总体标准差”。接下来,为年收入和销售额添加以下两个 SSRS StDevP 函数表达式。
=StDevP(Fields!YearlyIncome.Value, "Tablix1")
=StDevP(Fields!Sales.Value, "Tablix1")
同样,添加一个新列(Tbl StDevP Sale)。这将从各个员工的销售额值中减去表的总体标准差。
=Fields!Sales.Value - StDevP(Fields!Sales.Value, "Tablix1")
下面的报表显示了每个组的总行数以及整个表的总体标准差。请将 Tablix1 替换为数据集名称,以获取销售额总体标准差,而不考虑报表过滤器。
如果您查看 Christy Mehta 的 Tbl StDevP Sale 的报表预览。此处,24.99(销售额)– 1622.7157(表销售额总体标准差)= -1597.726。
