我现在有这样一个数据表:
  记录号  教师  课程   分数   班级
分数为该班每个学生对本班各任课教师打的分。有32个班,各班任课教师人数不等
现在我想求得这样一个结果:
  如何按班求得每位教师得最高分的数目。
  已经简化的不能再简化了,这样的问题再回答不出来的话,我真要怀疑论坛高手的水平了

解决方案 »

  1.   

    补充一下,我用的是access数据库,sql语句最好能在access中实现
      

  2.   

    select "班级","教师",max(sum("分数"))
    from "你的表名"
    group by "班级","教师"我对的意思理解不是很清。不知这个行不行?
      

  3.   

    楼上的你好,max(sum("分数"))是不行的,不能嵌套
      

  4.   

    第一时间想到的:
    SELECT 班级,
      老师,
      COUNT(*)最高分数目 
    FROM 打分表 A 
    WHERE =(SELECT MAX(分数) FROM 打分表 WHERE 班级=A.班级 AND 老师=A.老师) 
    GROUP BY 班级,老师
      

  5.   

    WHERE 分数=(SELECT MAX(分数) FROM 打分表 WHERE 班级=A.班级 AND 老师=A.老师)
      

  6.   

    我下面的有问题,试着写的,通不过:
    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
      

  7.   

    select 班级,教师,sum(分数)
    from 输入表 A where 
    分数<>(select 分数 from (select 班级,教师,max(分数) from  输入表 group by 班级,教师) B where B.班级=A.班级 and B.教师=A.教师 )
    group by 班级,教师
      

  8.   

    唉!我把意思完全说清楚吧!我要求的结果为:
    (所有对这个教师的总分-最高分*round(最高分数目*5%))/(参加打分学生数-round(最高分数目*%5))
    就是这样的,我本来想给我点提示,就可以了,可是一直达不到要求
      

  9.   

    你说这个公式到底想做什么啊?? 不太明白!!
    你最后是要一个 公式 还是一个值??? 你直接说一下你的程序功能吧,或许别人能给你一个比较好的解决方案~~而且,我个人认为啊,仅凭一条SQL语句就实现那么复杂的功能,估计不太容易,特别是ACCESS!! 莫名其妙的错误,够你喝一壶的!!!或许你可以,想个方法分步做~
    先得出 最高分数目 ,最高分 ,这个应该容易吧?你自己不也实现了吗? 
    然后,就是简单的数学问题了吧?!!!!支持 :
    SELECT 班级,老师,COUNT(*)最高分数目 
    FROM 打分表 A 
    WHERE =(SELECT MAX(分数) FROM 打分表 WHERE 班级=A.班级 AND 老师=A.老师) 
    GROUP BY 班级,老师
      

  10.   

    问题解决没?
    试试这个
    //--------------------------------------------------------------------------
    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
      

  11.   

    谢谢热心的HsWong,研究研究,回来后给分