常见分组统计示例
在学习本课的内容之前,请打开示例文件"统计演示.Table"。
示例一,统计不同客户和产品的销售数量和金额
将下面的代码复制到命令窗口:
'定义一个GroupTableBuilder,名称为"统计表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已经可以对生成的统计结果进行二次统计,直接生成汇总模式了,下面会有专门一节对此进行介绍。