统计(150分)

  • 主题发起人 主题发起人 zhjq11
  • 开始时间 开始时间
Z

zhjq11

Unregistered / Unconfirmed
GUEST, unregistred user!
有表如下:
姓名 班级 数学 语文 物理
张三 一班 优 良 优
李四 一班 良 良 中
赵五 二班 优 优 良
现要求统计如下:
数学 语文 物理 合计
优 良 中 优 良 中 优 良 中
一班 1 1 2 1 1 6
二班 1 1 1 3
请问各位大侠:如何用最简单最快速的方法得出上述统计表?











 
将一班和二班分到两个表中,然后设三个变量you,liang,zhong。然后在循环中检测每一
人的科目所属,在合条件的变量中加一,至于合计的数将人数乘以三就是了。
 
to nhjoy:
此法不行,班级内容很多,不可能建那末多表。
 
创建 9 个临时表
table1,table2....
字段为(班级,汇总值)
insert into table1
select 班级,COUNT(*) from table where table.数学='优' group by 班级
insert into table2
select 班级,COUNT(*) from table where table.数学='良' group by 班级
insert into table3
select 班级,COUNT(*) from table where table.数学='中' group by 班级
...
之后
select table1.班级,table1.汇总值,table2.汇总值....
from table1,table2,table3....
 
两种方法,参考吧:
1、采用Query统计 + Lookup字段
建9个Query,分别统计某门课程得优、良、中的人数;
如:select 班号,Count(班号) from 成绩 where 课程='数学' and 成绩='优'
group by 班号
一个 Query 统计参加考试的总人数;(免了)
一个 query 做班级列
select 班号,班名 from 班 order by 班号,其中设 10 个
Lookup字段,用班号查出对应某门课程某种成绩的人数、及总人数
2、遍历成绩表,填入一个专门用于统计的临时表,结构跟报表一样,根据每一个人的成绩
及班级,在相应的字段上加 1

不知道哪种会更快一些,没准是后者
 
你是什么数据库?
sql*server,ORACLE中好象可以直接用SQL语句实现。
 
什么样的数据库?支持存储过程吗?
 
to johnyh,zwhc:
是paaradox.
 
這個表應該很簡單的了﹐你用Access,dbf就可以實現的了。先將資料從數據庫里拿出來放
在一個數組里面﹐然后在放的同時再遞加就可以搞定。
 
另:我用FASTREPORT做报表。
 
zhjq11:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
你最好有一个班级的数据库,然后就好处理了!
 
如果是SQl AnyWhere可以用SQL实现,paradox表看来只能临时表了。
 
多人接受答案了。
 

Similar threads

后退
顶部