使用rank() 函数可以避免多个最大/最小值出现
select avg(if(rank1<>1 and rank2<>1, salary, null)) from
(select salary
,rank() over (order by salary) as rank1
,rank() over (order by salary desc) as rank2
from salaries
where to_date = '9999-01-01') t1