常见分组统计示例

在学习本课的内容之前,请打开示例文件"统计演示.Table"。

示例一,统计不同客户和产品的销售数量和金额 

将下面的代码复制到命令窗口: 

'定义一个GroupTableBuilder,名称为"统计表1",对订单表进行统计。
Dim
b As New GroupTableBuilder("统计表1",DataTables("订单"))
b
.Groups.AddDef("客户") '添加客户列用于分组
b
.Groups.AddDef("产品") '添加产品列用于分组
b
.Totals.AddDef("数量") '添加数量列用于统计
b
.Totals.AddDef("金额") '添加金额列用于统计
b
.Build '生成统计表 
MainTable
= Tables("统计表1")
'打开生成的统计表

执行后,得到的统计结果:

示例二,统计不同月份的销售数量和金额 

将下面的代码复制到命令窗口: 

Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b.Groups.AddDef(
"日期","月份") '添加日期列用于分组,并用"月份"代替原名称
b.Totals.AddDef(
"数量") '添加数量列用于统计
b.Totals.AddDef("金额") '添加金额列用于统计
b.Build
'生成统计表
MainTable = Tables("统计表1") '打开生成的统计表

执行结果:

 

示例三,按年统计不同月份的销售数量和金额

在示例二中,不同年但同月的数据,会作为同一个分组统计在一起,除非你的订单表只有一年的数据,或者你要的就是这样的统计结果,否则我们还需要加上一个按年统计的分组。
复制以下代码至命令窗口: 

Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b.Groups.AddDef(
"日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
b.Groups.AddDef(
"日期","月") '添加日期列用于分组,并用"月"代替原名称
b.Totals.AddDef(
"数量") '添加数量列用于统计
b.Totals.AddDef("金额") '添加金额列用于统计
b.Build
'生成统计表
MainTable = Tables("统计表1") '打开生成的统计表

执行结果:

示例四,按月统计指定产品的销售数量和金额

复制以下代码至命令窗口执行: 

Dim b As New GroupTableBuilder("统计表1", DataTables("订单"), "产品 = 'PD01'")
b
.Groups.AddDef("日期", DateGroupEnum.Year, "年") '添加日期列用于分组,并用"年"代替原名称
b
.Groups.AddDef("日期","月") '添加日期列用于分组,并用"月"代替原名称
b
.Totals.AddDef("数量") '添加数量列用于统计
b
.Totals.AddDef("金额") '添加金额列用于统计
b
.Build '生成统计
MainTable = Tables("统计表1") '打开生成的统计表

即可统计出PD01在各月的销售数量。

示例五,统计不同客户在1999年各季度下的订单数,以及总的订购数量

复制以下代码至命令窗口: 

Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b.Filter =
"[日期] >= #1/1/1999# And [日期]<= #12/31/1999#"
b.Groups.AddDef(
"客户")'添加客户列用于分组
'添加日期列用于分组,按季度分组,并用"季度"代替原名称

b.Groups.AddDef(
"日期",DateGroupEnum.Quarter,"季度")
'添加客户列用于统计,其实对于Count类型的统计,可用任何列作为统计列。

b.Totals.AddDef(
"客户",AggregateEnum.Count,"订单数")
b.Totals.AddDef(
"数量","订购数量") '添加数量列用于统计
b.Build '生成统计表
MainTable = Tables("统计表1") '打开生成的统计表

执行结果:

示例六,垂直方向自动汇总

统计不同客户的订购数量和金额,并在垂直方向增加一个自动汇总行:

Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b
.Groups.AddDef("客户") '添加客户列用于分组
b
.Totals.AddDef("数量") '添加数量列用于统计
b
.Totals.AddDef("金额") '添加数量列用于统计
b
.VerticalTotal = True '自动垂直汇总
b
.Build '生成统计表 
MainTable = Tables(
"统计表1") '打开生成的统计表

执行结果:

提示: 垂直方向自动汇总现在比较少用了,因为GroupTableBuilder已经可以对生成的统计结果进行二次统计,直接生成汇总模式了,下面会有专门一节对此进行介绍。


本页地址:http://www.foxtable.com/webhelp/topics/3284.htm