calculate 命令
对表中的字段或包含字段的表达式进行财务和统计操作。
语法
CALCULATE eExpressionList
[Scope] [FOR lExpression1] [WHILE lExpression2]
[TO MemVarList | TO ARRAY ArrayName]
[NOOPTIMIZE]
参数
eExpressionList
指定表达式,表达式可以包含下列函数的任意组合:
AVG(nExpression)
CNT( )
MAX(eExpression)
MIN(eExpression)
NPV(nExpression1, nExpression2 [, nExpression3])
STD(nExpression)
SUM(nExpression)
VAR(nExpression)
用逗号分隔表达式列表 eExpressionList 中的函数。这些函数仅用于 calculate 命令。在本段后面将详细说明这些函数。不要与有相似名称的独立函数相混淆。例如,CALCULATE MIN( ) 与 MIN( ) 不同。
Scope
指定计算中所使用记录的范围。只有在范围之内的记录才进行计算。Scope 子句有:ALL、NEXT nRecords、RECORD nRecordNumber 和 REST。有关范围子句的详细信息,请参阅 Scope 子句或《开发指南》第二章“语言概述”。包含 Scope 子句的命令只能在活动工作区内的表上操作。
FOR lExpression1
指定只有满足逻辑条件 lExpression1 的记录才进行计算。在计算中包含 FOR 子句可以有条件地选择记录,筛选出不想要的记录。若 lExpression1 是可优化的表达式,Rushmore 技术将优化CALCULATE...FOR 查询。为了获得最佳性能,应在 FOR 子句中使用可优化表达式。有关 Rushmore 可优化表达式的内容,请参阅 SET OPTIMIZE 和深入了解 Rushmore 技术,或《开发指南》第十七章“优化应用程序”。
WHILE lExpression2
指定一个条件,只要逻辑表达式 lExpression2 计算为“真”(.T.),记录就进行计算。
TO MemVarList
指定一个或多个用以存储计算结果的变量。若指定的内存变量不存在,Visual FoxPro 自动用该名称创建此内存变量。
TO ARRAY ArrayName
指定存储计算结果的数组。若指定的数组不存在,Visual FoxPro 自动用该名称创建此数组。若该数组存在,但容纳不下所有的计算结果,Visual FoxPro 自动增大数组以容纳信息。若数组比需要的大,多余元素的内容保持不变。计算结果按照 calculate 命令指定的顺序保存到数组中。
NOOPTIMIZE
关闭 CALCULATE 的 Rushmore 优化。有关详细内容,请参阅 SET OPTIMIZE 和深入了解 Rushmore 技术 ,或《开发指南》第十七章“优化应用程序”。
AVG(nExpression)
计算 nExpression 的算术平均值。只有满足 Scope 和/或可选的 FOR 或 WHILE 条件的记录才包括到结果中。
CNT( )
返回表中记录的数目。只有满足 Scope 和/或可选的 FOR 或 WHILE 条件的记录才包括到结果中。
MAX(eExpression)
返回 eExpression 的最大值或最新值。在 MAX( ) 子句中可指定任何字符型、日期型、日期时间型、数值型、浮点型、整型、双精度型或货币型字段,或包含这些类型字段的表达式。只有满足 Scope 和/或可选的 FOR 或 WHILE 条件的记录才包括到结果中。
MIN(eExpression)
返回 eExpression 的最小值或最早值。eExpression 中可包括任何字符型、日期型、日期时间型、数值型、浮点型、整型、双精度型或货币型字段,或任何使用这些类型字段的有效表达式。只有满足Scope 和/或可选的 FOR 或 WHILE 条件的记录才包括到结果中。
NPV(nExpression1, nExpression2 [, nExpression3])
计算一个固定周期利率下,一系列现金流的净现值。
nExpression1 指定用十进制表示的利率。
nExpression2 指定代表一系列现金流的字段、字段表达式或数值表达式。每个现金流可正可负。当 nExpression2 是字段时,每个记录的字段值都认为是一个现金流。
nExpression3 指定可选的初始投资。如果不包括初始投资,则假定初始投资发生在第一阶段末。这个初始投资就是第一个记录,而且是负的,代表现金流出。
只有满足 Scope 和/或可选的 FOR 或 WHILE 条件的记录才包括到结果中。
STD(nExpression)
计算 nExpression 的标准偏差。标准偏差用来衡量字段或包含字段的表达式的值偏离平均值的程度。标准偏差越小,这些值偏离平均值就越少。只有满足 Scope 和/或可选的 FOR 或 WHILE 条件的记录才包括到结果中。
SUM(nExpression)
对 nExpression 的值求和。只有满足 Scope 和/或可选的 FOR 或 WHILE 条件的记录才包括到结果中。
VAR(nExpression)
从 nExpression 的平均值中计算方差。方差是标准偏差的平方。方差越小,值偏离平均值就越少。只有满足 Scope 和/或可选的 FOR 或 WHILE 条件的记录才包括到结果中。
说明
含有 Null 值的记录不包含在 CALCULATE 的操作中。