Foxtable(狐表)用户栏目专家坐堂 → 统计问题


  共有19951人关注过本帖树形打印复制链接

主题:统计问题

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


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
统计问题  发帖心情 Post By:2009/3/20 9:42:00 [只看该作者]

统计问题 


说明:

1、以“语文”成绩为例,将语文优生(简称“语优”)分为四类(即A、B1、B2、C),现欲分班级统计“语优”中“A”优有多少人、“B1”优有多少人、“B2”优有多少人、“C”优有多少人;数学、英语、总分依次类推。

2、物理/政治的“A优”为“物优”与“政优”中“A”优数之和,其它类推。  

3、最后一行,将统计情况汇总。

4、若同时能用“手工编码”和DataColChanged事件编程等方式一题多解为最好,方便学习。

外:“优生统计”表中为根据“成绩及优生划分”表统计出的正确数据,供参考。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计问题.table


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/20 10:14:00 [只看该作者]

举例好象不恰当,因为表中没有语文数据。

Dim dr As DataRow = e.DataRow
Dim dt As DataTable =DataTables("成绩及优生划分")
If e.DataCol.Name = "班级" And e.DataRow.IsNull("班级") = False Then
    dr("总分_A优") = dt.Compute("Count(姓名)", "[总优] = 'A' And [班级] = '" & dr("班级") & "'" )
    dr("总分_B1优") = dt.Compute("Count(姓名)", "[总优] = 'B1' And [班级] = '" & dr("班级") & "'" )
    dr("总分_B2优") = dt.Compute("Count(姓名)", "[总优] = 'B2' And [班级] = '" & dr("班级") & "'" )
    dr("总分_C优") = dt.Compute("Count(姓名)", "[总优] = 'C' And [班级] = '" & dr("班级") & "'" )
End If

[此贴子已经被作者于2009-3-20 10:27:58编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/20 10:16:00 [只看该作者]

只做了个总分优,其它自己参照做吧.

最后行你应该用汇总模式。

 回到顶部
帅哥哟,离线,有人找我吗?
abcdzabcdz
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2009/3/20 11:59:00 [只看该作者]

谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
abcdzabcdz
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2009/3/22 19:50:00 [只看该作者]

 

对2楼语句深入思考:

思考1、计算“总分”中“A”优与“B1”优人数之和(假设计存在“总分_AB1优”):

dr("总分_AB1优") = dt.Compute("Count(姓名)", "[总优] = 'B1' And [班级] = '" & dr("班级") & "' Or [总优] = 'A' And [班级] = '" & dr("班级") & "'" )

计算“A”、“B1”、“B2”优人数之和:

dr("总分_AB1B2优") = dt.Compute("Count(姓名)", "[总优] = 'B1' And [班级] = '" & dr("班级") & "' Or [总优] = 'B1' And [班级] = '" & dr("班级") & "' Or [总优] = 'A' And [班级] = '" & dr("班级") & "'" )

思考2、高中分文理科,统计成绩时常把“物理与政治”科数据放在一起统计(理科无政治学科,文科无物理学科),假设计有一列“物理/政治_A优”,我将上述语句修改为:

dr("物理/政治_A优") = dt.Compute("Count(姓名)", "[物优] = 'A' And [班级] = '" & dr("班级") & "' Or [政优] = 'A' And [班级] = '" & dr("班级") & "'" )

两种思维方式一致,结果大相径庭(思考1测试数据正确,思考2测试数据错误),真让人想不通????问题到底出在哪里呢????


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/22 19:56:00 [只看该作者]

道理非常简单,再思考下第二个语句为什么不行,相信你应该很快就能明白的。

 回到顶部
帅哥哟,离线,有人找我吗?
abcdzabcdz
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2009/3/22 20:04:00 [只看该作者]

还是不太明白?是不是[物优]在前已提前定位?

怎样修改第二个语句才能达到预期目的?


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/22 20:49:00 [只看该作者]

Dim dr As DataRow = e.DataRow
Dim dt As DataTable =DataTables("成绩及优生划分")
Dim Str As String = "And [班级] = '" & dr("班级") & "'"
If e.DataCol.Name = "班级" And e.DataRow.IsNull("班级") = False Then
    dr("物理/政治_A优") = dt.Compute("Count(姓名)", "[物优] = 'A'" & Str) + dt.Compute("Count(姓名)", "[政优] = 'A'" & Str)
End If

 回到顶部