全部显示

DStDev、DStDevP 函数

   

DStDevDStDevP 函数用于估算特定记录集(一个)中一组值的标准差。可以在 Visual Basic、、查询表达式、窗体或报表上的计算控件中使用 DStDevDStDevP 函数。

DStDevP 函数用于计算总体,而 DStDev 函数用于计算总体抽样。

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

DStDev(expr, domain, [criteria])

DStDevP(expr, domain, [criteria])

DStDevDStDevP 函数具有以下参数:

参数 说明
expr 表达式,用于标识要在其中计算标准差的数值字段。它可以是用于标识表或查询中字段的字符串表达式,也可以是以该字段中的数据进行计算的表达式。在 expr 中可以包括表中字段的名称、窗体上的控件、常量或函数。如果 expr 包含函数,那么它可以是内置的,也可以是用户自定义的,但不能是另一个域聚合函数或 SQL 聚合函数。
domain 字符串表达式,代表组成域的记录集。可以是表名称或不需要参数的查询的查询名称。
criteria 可选的字符串表达式,用于限制 DStDevDStDevP 函数执行的数据范围。例如,criteria 通常等价于 SQL 表达式中的 WHERE 子句,只是不含 WHERE 关键字。如果忽略 criteriaDStDevDStDevP 函数将在整个域范围内计算 expr。任何包含在 criteria 中的字段必须同时也是 domain 中的字段,否则 DStDevDStDevP 函数将返回 Null

说明

如果 domain 引用的记录少于两条,或满足 criteria 的记录少于两条,DStDevDStDevP 函数将返回 Null,表示不能计算标准差。

无论是在宏、模块、查询表达式或者在计算控件中使用 DStDevDStDevP 函数,都必须谨慎构造 criteria 参数以确保能够正确地进行计算。

DStDevDStDevP 函数可用于在选择查询的“条件”行中指定条件。例如,可以在“Orders”表和“Products”表上创建一个查询来显示运输成本高于平均值加上标准差的所有产品。“Freight”字段下的条件行应包含以下表达式:

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

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

注意   在总计查询的计算字段表达式中,可以使用 DStDevDStDevP 函数或 StDevStDevP 函数。如果使用 DStDevDStDevP 函数,将在分组数据之前计算标准差。如果使用 StDevStDevP 函数,则在分组之后计算字段表达式的值。

当需要指定条件来限制函数执行的数据范围时,可在计算控件中使用 DStDevDStDevP 函数。例如,要显示运到“华北”的订单的标准差,可将文本框的“控件来源” 属性设置为以下表达式:

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

如果只是要查找 domain 中所有记录的标准差,可使用 StDevStDevP 函数。

提示   如果派生 expr 的字段的数据类型为数字,DStDevDStDevP 函数将返回 Double 数据类型。如果在计算控件中使用 DStDevDStDevP 函数,可在表达式中包含一个数据类型转换函数以改进性能。

注意   使用这些函数时,对 domain 中的记录未保存的更改将不包括在内。如果要让 DStDevDStDevP 函数基于更改后的数据,必须先保存更改。方法是单击“记录”菜单上的“保存记录”,将焦点移动到另一个记录上,或者使用 Update 方法。

示例

下面的示例返回运往英国的订单全体或全体抽样的标准差估计值。域为“Orders”表。criteria 参数将记录集结果限制为“ShipCountry”等于 UK 的记录。

Dim dblX As Double
Dim dblY As Double

' Sample estimate.
dblX = DStDev("[Freight]", "Orders", "[ShipCountry] = 'UK'")

' Population estimate.
dblY = DStDevP("[Freight]", "Orders", "[ShipCountry] = 'UK'")

下一个示例在 criteria 参数中使用变量 strCountry 来计算相同的估计。注意:字符表达式中包含单引号,使得字符串连接时,字面字符串 UK 将包含在单引号中。

Dim strCountry As String
Dim dblX As Double
Dim dblY As Double

strCountry = "UK"

dblX = DStDev("[Freight]", "Orders", _
    "[ShipCountry] = '" & strCountry & "'")

dblY = DStDevP("[Freight]", "Orders", _
    "[ShipCountry] = '" & strCountry & "'")