DStDev 和 DStDevP 函数

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

可以使用 DStDevDStDevP 函数来估算指定记录集中一组值的标准偏差, (域) 。 在窗体或报表上的 Visual Basic for Applications (VBA) 模块、宏、查询表达式或计算控件中使用 DStDev 和 DStDevP 函数。

使用 DStDevP 函数计算总体,使用 DStDev 函数评估总体样本。

例如,可以在模块中使用 DStDev 函数来计算一组学生考试分数的标准偏差。

语法

DStDev (expr、域 [, criteria] )

DStDevP (expr、域 [, criteria] )

DStDevDStDevP 函数具有以下参数:

参数 说明
expr 必需。 一个表达式,用于标识要查找标准偏差的数值字段。 它可以是标识表或查询中的字段的字符串表达式,也可以是对该字段中的数据执行计算的表达式。 在 expr 中,可以在表中包括字段的名称、窗体上的控件、常量或函数。 如果 expr 包含函数,它可以是内置函数或用户定义的函数,但不能是其他域聚合函数或 SQL 聚合函数。
必需。 一个字符串表达式,标识构成域的记录集。 它可以是表名,也可以是不需要参数的查询的查询名称。
条件 可选。 用于限制执行 DStDev 或 DStDevP 函数的数据范围的字符串表达式。 例如, 条件 通常等效于 SQL 表达式中的 WHERE 子句,而不使用 WHERE 一词。 如果省略 条件则 DStDevDStDevP 函数针对整个域评估 expr 条件中包含的任何字段也必须是域中的字段;否则,DStDevDStDevP 函数将返回 Null。

备注

如果 引用的记录少于两条,或者满足 条件的记录少于两条, 则 DStDevDStDevP 函数返回 Null,指示无法计算标准偏差。

无论是在宏、模块、查询表达式还是计算控件中使用 DStDevDStDevP 函数,都必须仔细构造 criteria 参数,以确保正确计算该参数。

可以使用 DStDevDStDevP 函数在选择查询的“条件”行中指定条件。 例如,可以针对“订单”表和“产品”表创建查询,以显示货运成本高于平均值加上货运成本的标准偏差的所有产品。 “货运”字段下的“条件”行将包含以下表达式:

>(DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders"))

可以在查询的计算字段表达式或更新查询的“更新到”行中使用 DStDevDStDevP 函数。

注意

可以在总计查询的计算字段表达式中使用 DStDevDStDevP 函数或 StDevStDevP 函数。 如果使用 DStDevDStDevP 函数,则会在对数据进行分组之前计算值。 如果使用 StDevStDevP 函数,则会在计算字段表达式中的值之前对数据进行分组。

如果需要指定条件来限制执行函数的数据范围,请在计算控件中使用 DStDev 和 DStDevP 函数。 例如,若要显示要寄送到加州的订单的标准偏差,请将文本框的 ControlSource 属性设置为以下表达式:

=DStDev("[Freight]", "Orders", "[ShipRegion] = 'CA'")

如果只想查找 域中所有记录的标准偏差,请使用 StDevStDevP 函数。

提示 如果派生 expr 的字段的数据类型为数字,则 DStDev 和 DStDevP 函数返回 Double 数据类型。 如果在计算控件中使用 DStDev 或 DStDevP 函数,请在表达式中包含数据类型转换函数以提高性能。

注意

使用这些函数时,不包括 对域中 记录的未保存更改。 如果希望 DStDevDStDevP 函数基于更改的值,必须先单击“数据”选项卡上“记录”下的“保存记录”,将焦点移动到另一条记录,或使用 Update 方法保存更改。

查询示例

Expression 结果
SELECT DStDev (“unitprice”,“productSales”,“unitprice>140”) AS Expr1, DStDevP (“unitprice”,“productSales”,“unitprice<140”) AS Expr2 FROM productSales GROUP BY DStDev (“unitprice”,“productSales”,“unitprice>140”) , DStDevP (“unitprice”,“productSales”,“unitprice<140”) ; 计算“UnitPrice” (将给定数据视为示例) 表“ProductSales”的Standard偏差,其中“unitprice”大于 140,并在 Expr1 中显示结果。 此外,计算“UnitPrice”Standard (将给定数据视为整个总体) “unitprice”小于 140 的偏差,并在 Expr2 中显示结果。
SELECT DStDev (“unitprice”,“productSales”,“unitprice>140”) AS DstDev, DStDevP (“unitprice”,“productSales”,“unitprice<140”) AS DstDevP FROM productSales GROUP BY DStDev (“unitprice”,“productSales”,“unitprice>140”) , DStDevP (“unitprice”,“productSales”,“unitprice<140”) ; 计算“UnitPrice”的Standard偏差, (将给定数据视为“ProductSales”表的示例) ,其中“unitprice”大于 140,并在 DstDev 中显示结果。 还计算“UnitPrice” (将给定数据视为整个总体) (其中“unitprice”小于 140)并在 DstDevP 中显示结果的“UnitPrice”的Standard偏差。

VBA 示例

注意

下面的示例演示了如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在搜索旁边的下拉列表中选择“开发人员参考”,并在搜索框中输入一个或多个术语。

以下示例返回总体标准偏差的估计值,以及运往英国的订单的总体样本。 域是 Orders 表。 criteria 参数将生成的记录集限制为 ShipCountryRegion 值为 UK 的记录集。

Dim dblX As Double
Dim dblY As Double
' Sample estimate.
dblX = DStDev("[Freight]", "Orders", _
    "[ShipCountryRegion] = 'UK'")
' Population estimate.
dblY = DStDevP("[Freight]", "Orders", _
    "[ShipCountryRegion] = 'UK'")

下一个示例通过在 criteria 参数中使用变量 strCountryRegion来计算相同的估计值。 请注意,字符串表达式中包含单引号 (') ,因此,当串联字符串时,字符串文本 UK 将括在单引号中。

Dim strCountryRegion As String
Dim dblX As Double
Dim dblY As Double
strCountryRegion = "UK"
dblX = DStDev("[Freight]", "Orders", _
    "[ShipCountryRegion] = '" & strCountryRegion & "'")
dblY = DStDevP("[Freight]", "Orders", _
    "[ShipCountryRegion] = '" & strCountryRegion & "'")