可以使用 DStDev 和 DStDevP 函数来估计指定记录集中的一组值 (域) 的标准偏差。 在窗体或报表上的 Visual Basic for Applications (VBA) 模块、宏、查询表达式或计算控件中使用 DStDev 和 DStDevP 函数。
使用 DStDevP 函数评估总体,使用 DStDev 函数评估总体样本。
例如,可以在模块中使用 DStDev 函数来计算一组学生考试成绩的标准偏差。
语法
DStDev (expr, domain [, criteria] )
DStDevP (expr, domain [, criteria] )
DStDev 和 DStDevP 函数具有以下参数:
| 参数 | 说明 |
|---|---|
| expr | 必需。 标识要查找标准偏差的数值字段的表达式。 它可以是标识表或查询中字段的字符串表达式,也可以是对该字段中的数据执行计算的表达式。 在 expr 中,您可以包含表中的字段名称、窗体上的控件、常量或函数的名称。 如果 expr 包含一个函数,则它可以是内置的或用户定义的,但不能是另一个域聚合或 SQL 聚合函数。 |
| 域 | 必需。 标识构成域的记录集的字符串表达式。 它可以是表名称,也可以是不需要参数的查询的查询名称。 |
| 条件 | 可选。 用于限制对其执行 DStDev 或 DStDevP 函数的数据范围的字符串表达式。 例如, criteria 通常等效于 SQL 表达式中的 WHERE 子句,而不包含单词 WHERE。 如果省略 条件 , DStDev 和 DStDevP 函数将针对整个域评估 expr 。 条件中包含的任何字段也必须是域中的字段;否则,DStDev 和 DStDevP 函数将返回 Null。 |
备注
如果 域 引用的记录少于两条,或者满足 条件的记录少于两条,则 DStDev 和 DStDevP 函数返回 Null,表示无法计算标准偏差。
无论是在宏、模块、查询表达式还是计算控件中使用 DStDev 或 DStDevP 函数,都必须仔细构造 criteria 参数,以确保正确计算它。
可以使用 DStDev 和 DStDevP 函数在选择查询的“条件”行中指定条件。 例如,可以在“订单”表和“产品”表上创建查询,以显示运费高于运费平均值与标准偏差之和的所有产品。 运费字段下方的“条件”行将包含以下表达式:
>(DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders"))
可以在查询的计算字段表达式中或更新查询的“更新到”行中使用 DStDev 和 DStDevP 函数。
注意
可以在总计查询的计算字段表达式中使用 DStDev 和 DStDevP 函数或者 StDev 和 StDevP 函数。 如果使用 DStDev 或 DStDevP 函数,则在对数据进行分组之前计算值。 如果使用 StDev 或 StDevP 函数,则在计算字段表达式中的值之前对数据进行分组。
当您需要指定条件来限制对其执行函数的数据范围时,请在计算控件中使用 DStDev 和 DStDevP 函数。 例如,若要显示发往加利福尼亚州的订单的标准偏差,请将文本框的 ControlSource 属性设置为以下表达式:
=DStDev("[Freight]", "Orders", "[ShipRegion] = 'CA'")
如果只想查找 域中所有记录的标准偏差,请使用 StDev 或 StDevP 函数。
提示 如果派生 expr 的字段的数据类型是数字,则 DStDev 和 DStDevP 函数返回 Double 数据类型。 如果在计算控件中使用 DStDev 或 DStDevP 函数,请在表达式中包含数据类型转换函数以提高性能。
注意
使用这些函数时,不包括 对域 中记录所做的未保存更改。 如果希望 DStDev 或 DStDevP 函数基于更改的值,必须先通过单击“数据”选项卡上“记录”下的“保存记录”、将焦点移动到另一条记录或使用“更新”方法保存更改。
查询示例
| 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”的Standard偏差, (将给定数据视为表“ProductSales”中的示例) ,其中“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”的Standard偏差, (将给定数据视为“UnitPrice”小于 140 的整个总体) ,并在 DstDevP 中显示结果。 |
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'")
下一个示例通过在条件参数中使用变量 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 & "'")