我现在有这样一个数据表:
记录号 教师 课程 分数 班级
分数为该班每个学生对本班各任课教师打的分。有32个班,各班任课教师人数不等
现在我想求得这样一个结果:
如何按班求得每位教师得最高分的数目。
已经简化的不能再简化了,这样的问题再回答不出来的话,我真要怀疑论坛高手的水平了
记录号 教师 课程 分数 班级
分数为该班每个学生对本班各任课教师打的分。有32个班,各班任课教师人数不等
现在我想求得这样一个结果:
如何按班求得每位教师得最高分的数目。
已经简化的不能再简化了,这样的问题再回答不出来的话,我真要怀疑论坛高手的水平了
解决方案 »
- 怎样更换PopupMenu的图片?
- 一个奇怪的问题,大家帮我看一看,???
- 请问有没有办法得到给Adoquery 中SQL 变量赋值后的sql。急。。。
- Delphi中的i发音是/i/还是/ai/啊
- 如何将一条修改的数据重新存入表内?
- SQL语句?
- 为什么在判断state=dsInsert时程序竟然说 Undeclared identifier: 'dsInsert'
- ADOQuery的事务问题
- Indy的idtcpServer的Onexecute事件中怎样使用ADO操作向数据库表中添加记录呢?
- 虚心求教!!!是否有大侠编过类似程序???
- 请问如何获得组合控件上某个控件的句柄
- 如何写这样的SQL语句
from "你的表名"
group by "班级","教师"我对的意思理解不是很清。不知这个行不行?
SELECT 班级,
老师,
COUNT(*)最高分数目
FROM 打分表 A
WHERE =(SELECT MAX(分数) FROM 打分表 WHERE 班级=A.班级 AND 老师=A.老师)
GROUP BY 班级,老师
select 班级,教师,sum(分数)-(b.最高分数目*max(分数))
from
(SELECT COUNT(*) as 最高分数目 FROM 输入表 A WHERE 分数=(SELECT MAX(分数) FROM 输入表 WHERE 班级=A.班级 AND 教师=A.教师) GROUP BY 班级,教师) b, 输入表
group by 教师,班级 order by 班级,max(分数) desc
from 输入表 A where
分数<>(select 分数 from (select 班级,教师,max(分数) from 输入表 group by 班级,教师) B where B.班级=A.班级 and B.教师=A.教师 )
group by 班级,教师
(所有对这个教师的总分-最高分*round(最高分数目*5%))/(参加打分学生数-round(最高分数目*%5))
就是这样的,我本来想给我点提示,就可以了,可是一直达不到要求
你最后是要一个 公式 还是一个值??? 你直接说一下你的程序功能吧,或许别人能给你一个比较好的解决方案~~而且,我个人认为啊,仅凭一条SQL语句就实现那么复杂的功能,估计不太容易,特别是ACCESS!! 莫名其妙的错误,够你喝一壶的!!!或许你可以,想个方法分步做~
先得出 最高分数目 ,最高分 ,这个应该容易吧?你自己不也实现了吗?
然后,就是简单的数学问题了吧?!!!!支持 :
SELECT 班级,老师,COUNT(*)最高分数目
FROM 打分表 A
WHERE =(SELECT MAX(分数) FROM 打分表 WHERE 班级=A.班级 AND 老师=A.老师)
GROUP BY 班级,老师
试试这个
//--------------------------------------------------------------------------
TABLE tscore --评分表
(
fclass --班级
fteacher --老师
fstudent --学生
f --打分
)
//--------------------------------------------------------------------------SELECT A.fclass AS 班级,
A.fteacher AS 老师,
(SUM(f)-MAX(f)*AVG(highprenum)-MIN(f)*AVG(lowprenum))/(COUNT(*)-AVG(highprenum)-AVG(lowprenum)) AS 评分
FROM tscore A,
(
SELECT fclass,fteacher,
MAX(highest) AS highscore,ROUND(COUNT(highest)*0.05) AS highprenum,
MIN(lowest) AS lowscore, ROUND(COUNT(lowest)*0.05) AS lowprenum
FROM
(
SELECT fclass,fteacher,f AS highest,NULL AS lowest FROM tscore A
WHERE f=(SELECT MAX(f) FROM tscore WHERE fclass=A.fclass
AND fteacher=A.fteacher)
UNION ALL
SELECT fclass,fteacher,NULL AS highest,f AS lowest FROM tscore A
WHERE f=(SELECT MIN(f) FROM tscore WHERE fclass=A.fclass
AND fteacher=A.fteacher)
)A GROUP BY fclass,fteacher
)B WHERE A.fclass=B.fclass AND AND A.fteacher=B.fteacher
GROUP BY A.fclass,A.fteacher