主题:请您帮助: 现有学生成绩库,如何统计分析各科目最高分,平均分,和及格率等(已上传成绩库)
coffeenight
[专家分:230] 发布于 2008-06-07 23:59:00
[color=FF0000][size=5]RT,想了半天,仍旧一头雾水
特上来求助,谢谢指点!
附件中有成绩库.[/size][/color]
最后更新于:2008-06-08 14:32:00
回复列表 (共7个回复)
沙发
ibcasliyi [专家分:100] 发布于 2008-06-08 15:26:00
看了你的库,设计的有点...... 呵呵
板凳
jinlonggao [专家分:17130] 发布于 2008-06-08 15:53:00
您这就是一个成绩表吗!而且是一个不规范的成绩表,你应该先把它变为只有学号、科目和成绩三列的一个表,然后就简单了。
运行下列SQL语句得到你想要的结果:
select 科目,max(成绩) as 最高分,avg(成绩) as 平均分;
from 成绩表;
group by 科目;
into cursor 成绩统计表
3 楼
jinlonggao [专家分:17130] 发布于 2008-06-08 16:06:00
你可能还有些雾,这样吧,你先运行下列语句:
select ID as 学号,Wgy as 科目,Wgycj as 成绩 from 成绩库;
union;
select ID as 学号,Ywk1 as 科目,Ywk1cj as 成绩 from 成绩库;
union;
select ID as 学号,Ywk2 as 科目,Ywk2cj as 成绩 from 成绩库;
into cursor 成绩表
然后,接着运行楼上SQL
看看结果是不是你想要的?
4 楼
jinlonggao [专家分:17130] 发布于 2008-06-08 16:10:00
各科的及格率,看来还有点儿麻烦.有空再给你说.
5 楼
jinlonggao [专家分:17130] 发布于 2008-06-08 16:39:00
select 科目,count(*) as 选课人数;
from 成绩表;
group by 科目;
into cursor 选课人数
select 科目,count(*) as 及格人数;
from 成绩表;
where 成绩 >= 60;
group by 科目;
into cursor 及格人数
select 科目,及格人数/选课人数 as 及格率;
from 及格人数 j,选课人数 x;
where j.科目 = x.科目;
into cursor 及格率
select c.科目,最高分,平均分,及格率;
from 成绩统计表 c,及格率 j;
where c.科目 = j.科目
(这是你最终想要的结果)
6 楼
cbl518 [专家分:57140] 发布于 2008-06-08 20:00:00
3 楼的思路是正确的,完全可以用,一条查询语句完成,
各科目最高分,平均分,和及格率的统计任务的!
7 楼
coffeenight [专家分:230] 发布于 2008-06-08 23:04:00
问题完美解决,非常感谢大家的热情帮助.
我已经把语句写入程序 现在只要运行一下,我要的数据就可以全部出来了
特别鸣谢 jinlonggao!
我来回复