Foxtable(狐表)用户栏目专家坐堂 → 一个经典的统计示例


  共有2928人关注过本帖平板打印复制链接

主题:一个经典的统计示例

帅哥哟,离线,有人找我吗?
狐狸爸爸
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
一个经典的统计示例  发帖心情 Post By:2016/9/9 9:50:00 [只看该作者]

这是帮助新增加的一节,恰好看到有用户提问,所以贴上来。

这种统计,帮助原来是有例子的,采用的是手工编写事件代码来完成,这里提供另一种方式,用按钮一次完成,二者各有优势,大家仔细体会。

一个经典的统计示例


假定有下图的成绩表:



图片点击可在新窗口打开查看此主题相关图片如下:2536.png
图片点击可在新窗口打开查看


希望得到下图所示的统计表:



图片点击可在新窗口打开查看此主题相关图片如下:2537.png
图片点击可在新窗口打开查看


这是一个比较经典的统计示例,需要灵活运用我们之前掌握的多种知识,但代码并不复杂:

Dim b As New SQLGroupTableBuilder("统计表1","成绩表")
b
.Groups.AddDef("班级")
b
.Totals.AddExp("人数","学号","",AggregateEnum.Count) '统计人数
Dim
nms() As String = {"语文","英语","数学","物理","化学"}
For
Each nm As String In nms '利用表达式统计及格人数和优秀人数
   
b.Totals.Addexp(nm & "_及格", "iif(" &  nm & " >= 60, 1, 0)")
    b.Totals.Addexp(nm &
"_
优秀", "iif(" &  nm & " >= 90, 1, 0)")
Next

b
.VerticalTotal = True
b
.Build()
For
Each nm As String In nms '对生成的统计表增加表达式列,计算及格率和优秀率
    DataTables(
"
统计表1").DataCols.Add(nm & "_及格率",Gettype(Double), nm & "_及格/人数" )
    Tables(
"
统计表1").Cols(nm & "_及格率").Move(Tables("统计表1").Cols(nm & "_及格").Index + 1)
    DataTables(
"
统计表1").DataCols.Add(nm & "_优秀率",Gettype(Double), nm & "_优秀/人数" )
    Tables(
"
统计表1").Cols(nm & "_优秀率").Move(Tables("统计表1").Cols(nm & "_优秀").Index + 1)
    DataTables(
"
统计表1").DataCols(nm & "_及格率").SetFormat("0.00%")
    DataTables(
"
统计表1").DataCols(nm & "_优秀率").SetFormat("0.00%")
Next
MainTable
= Tables("统计表1")










 回到顶部