如何用VFP6.0进行统计分析,主要是分类求和或平均值。数据较大有60万条左右。

如题所述

对当前选定表的指定数值字段或全部数值字段进行求和。
SUM [eExpressionList] [Scope] [FOR lExpression1] [WHILE lExpression2]
[TO MemVarNameList | TO ARRAY ArrayName] [NOOPTIMIZE]
参数
eExpressionList
指定要总计的一个或多个字段或者字段表达式。如果省略字段表达式列表,则总计所有数值型字段。
Scope
指定要总计的记录范围。范围子句有:ALL、NEXT nRecords、RECORD nRecordnumber 和 REST。关于作用域子句的详细内容,请参阅联机主题 scope(作用域)子句 或 语言概述。
SUM 默认的范围是所有记录 (ALL)。
FOR lExpression1
指定对逻辑条件 lExpression1 值为“真”(.T.) 的记录才进行总计。包含 FOR 子句可以有条件地总计记录,筛选出不想要的记录。
如果 lExpression1 是一个可优化表达式,那么 Rushmore 可以优化 SUM ... FOR 命令。为了获得最佳性能,请在 FOR 子句中使用可优化表达式。
关于 Rushmore 优化的详细内容,请参阅 SET OPTIMIZE 和 用 Rushmore 查询优化数据访问速度。
WHILE lExpression2
指定一个条件,在当前表中只对逻辑表达式 lExpression2 为“真” (.T.) 的记录进行总计。
TO MemVarNameList
将每个总计值存入一个内存变量。如果 MemVarNameList 中指定的内存变量不存在,则 Visual FoxPro 自动创建,列表中的内存变量名用逗号分隔。
TO ARRAY ArrayName
将总计值存入内存变量数组中,如果在 sum 命令中指定的数组不存在,则 Visual FoxPro 自动创建;如果数组存在但太小,不能包含所有的总计值,那么自动增加数组的大小以存放总计值。

NOOPTIMIZE
禁止 SUM 的 Rushmore 优化。
详细信息, 参见SET OPTIMIZE 和 用 Rushmore 查询优化数据访问速度。
示例
下面的示例显示 products 表中的 in_stock 字段和 on_order 字段的总计,以及这两个总计的和。
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && 打开 Products 表

SUM in_stock, on_order, in_stock+on_order ;
TO gnInStock, gnOnOrder, gnUnits

CLEAR
?
? '库存总数 : ', gnInStock && 显示 3119.00
? '订货总数 : ', gnOnOrder && 显示 780.00
? '总单位 : ', gnUnits && 显示 3899.00

计算数值表达式或字段的算术平均值。
AVERAGE [ExpressionList] [Scope] [FOR lExpression1] [WHILElExpression2]
[TO VarList | TO ARRAY ArrayName] [NOOPTIMIZE]
参数
ExpressionList
指定求平均值的表达式。ExpressionList 可以是用逗号分隔的表字段或包含表字段的数值表达式。
Scope
指定求平均值的记录或记录范围。只有在指定范围内的记录才参加求平均值运算。Scope 子句可以为 :ALL、NEXT nRecords、RECORD nRecordNumber 和 REST。默认的 Scope(范围)为所有记录。
包含 Scope 子句的命令仅处理活动工作区中的表。
FOR lExpression1
指定只有满足逻辑条件 lExpression1 的记录才参与计算。这样可以筛选出不想要的记录。
如果 lExpression 是可优化的表达式,Rushmore 技术将优化 AVERAG FOR 查询。若要获得最佳性能,应在 FOR 子句中使用可优化的表达式。有关 Rushmore 可优化表达式的详细内容,请参阅 SET OPTIMIZE 和 用 Rushmore 查询优化数据访问速度。
WHILE lExpression2
指定只要逻辑表达式 lExpression2 为“真”(.T.),记录就参与运算。直到遇到第一个使 lExpression2 计算得“假”(.F.) 为止。
TO VarList
指定保存平均值结果的内存变量或数组元素的列表。
TO ARRAY ArrayName
指定保存平均值结果的一维数组。一维数组可以在使用 AVERAGE 命令前创建。
如果指定数组不存在,Visula FoxPro 将自动创建该数组。如果数组存在,但大小不能包含所有结果,Visula FoxPro 将自动根据信息量增加数组大小。
NOOPTIMIZE
取消 AVERAGE 命令的 Rushmore 优化。有关的详细内容,请参阅 SET OPTIMIZE 和 用 Rushmore 查询优化数据访问速度。
备注
除非包含可选的表达式列表,否则选定表的所有字段都将参与求平均值的运算。如果 SET TALK 为 ON,结果显示在屏幕上。如果 SET HEADINGS 为 ON,字段名或包括字段名的表达式将显示在结果的上面。
示例
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE orders && 打开 order 表

CLEAR
AVERAGE Order_Amt && 计算所有订单的平均值
AVERAGE Order_Amt TO gnAvg && 保存平均值到内存变量
? '平均订货数: '
?? gnAvg && 再次显示平均值
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-27
具体数据和要求呢?没有提供
第2个回答  2012-04-03
你的库结构是怎样的?