加入原始的sql是select name, AVG(Score), MIN(Score), MAX(Score)
from Game
group by name表数据如下
name Score
aaa   10
aaa    5
aaa    1
aaa   7
aaa    8按照比赛规则,平均分应该是去掉最大和最小得分(10,1)计算 (5,7,8)的平均分 6.67
而目前通过sql,拿到的平均分是5个数的平均分(6.2)
我想问有没有方法在sql里,直接扣除最大最小得分,拿到剩下数据的平均分

解决方案 »

  1.   

    select name, AVG(Score), MIN(Score), MAX(Score)
    from ttp a where score<>dmax('score','ttp','name="' & a.name & '"') and score<>dmin('score','ttp','name="' & a.name & '"') group by name 
      

  2.   

    dmax是什么方法,好像不是mysql下的标准方法。
      

  3.   

    SELECT a.`name`, AVG(a.Score)
    FROM ttp a LEFT JOIN (SELECT NAME, MIN(Score) AS mi, MAX(Score) AS ma
    FROM ttp GROUP BY NAME) b ON a.`name`=b.`name` AND (a.score=b.mi OR a.score=b.ma)
    WHERE b.name IS NULLGROUP BY a.`name`
      

  4.   

    select (sum(Score)-MIN(Score)- MAX(Score))/(count(*)-2)
      

  5.   

    狼头是对的或者select avg(score) from  game where score>(select min(score) from game) and score <(select max(score) from game)