我的表结构是这样的
id(编号) scores(分数)  player(参赛者) appraiser(评委)
现要一条SQL语句能实现去掉一个最高分,一个最低分取平均值,,应该如何写???
注意是:去掉一个最高分,最高分有可能有多个,最低分也是去一个
SQL语句是什么呢????

解决方案 »

  1.   

    select player,avg= (sum(scores)-min(scroes)-max(scores))/(count(*) -2) 
    from tb 
    group by player
    having count(*) <> 2
      

  2.   


    select player,avg= (sum(scores)-min(scroes)-max(scores))/(count(*) -2) 
    from tb 
    group by player
    having count(*) >1
      

  3.   


    --trycreate table T(id int,scores decimal(9,2),player nvarchar(10),appraiser nvarchar(10))insert T select 1,10,'AA','CC'
    insert T select 2,10,'AA','DD'
    insert T select 3,9.5,'AA','EE'
    insert T select 4,9,'AA','FF'
    insert T select 5,9,'AA','GG'select avg(scores)
    from
    (
        select Row_number() over(order by scores) as rowID,scores
        from T
    )tmp
    where rowID between 2 and (select count(*)-1 from T)