怎样用SQL语句实现这样一种效果:
  去掉一个最高分,去掉一个最低分,最后求平均分得分;
有很多评委,表A结构为:
      班级   分数
用下面语句我仅能求得平均分,却不能去掉一个最高分和一个最低分:
select 班级,avg(分数)as 平均分 from A group by 班级

解决方案 »

  1.   

    CREATE TABLE t(
    fclass VARCHAR(10),
      f  FLOAT
    )
    GO
    INSERT INTO t 
    SELECT '1',90 UNION ALL
    SELECT '1',80 UNION ALL
    SELECT '1',70 UNION ALL
    SELECT '1',60 UNION ALL
    SELECT '1',50 UNION ALL
    SELECT '2',95 UNION ALL
    SELECT '2',90 UNION ALL
    SELECT '2',80 UNION ALL
    SELECT '2',70 UNION ALL
    SELECT '2',65
    GO
    SELECT A.fclass 班级,AVG(A.f)平均分 FROM t A,
    (
    SELECT fclass,
    MAX(f) xmax,
    MIN(f) xmin 
    FROM t GROUP BY fclass
    )B 
    WHERE A.fclass=B.fclass AND A.f>xmin AND A.f<xmax GROUP BY A.fclassGODROP TABLE t
      

  2.   

    SELECT fclass 班级,( (sum(f)-max(f)-min(f))/(count(fclass)-2) )as 平均分 
    FROM t
    GROUP BY fclass
      

  3.   

    寫的好!
    一句就搞定了,今天又學了一句。TKS!