解法一 笛卡尔积
1、查询在职员工最大薪水和最小薪水
select min(salary) as min_salary,max(salary) as max_salary
from salaries
where to_date='9999-01-01'
2、1表与薪水表笛卡尔积连接,查询在职员工、薪水不等于最大值和最小值的平均值
select avg(salary) as avg_salary
from
(select min(salary) as min_salary,max(salary) as max_salary
from salaries
where to_date='9999-01-01') as a,salaries as b
where to_date='9999-01-01' and
(b.salary!=a.min_salary and b.salary !=a.max_salary);
解法二  平均工资=(总工资-最大工资-最小工资)/(总员工人数-2)
select (sum(salary)-max(salary)-min(salary))/(count(1)-2) as avg_salary
from salaries
where to_date='9999-01-01'