-- 首先,求出来在职员工的最大
WITH
max_salary AS(
SELECT MAX(salary) max_salary
FROM salaries
WHERE to_date = '9999-01-01'
),
-- 接着,求出最小
min_salary AS(
SELECT MIN(salary) min_salary
FROM salaries
WHERE to_date = '9999-01-01'
)
-- 找出工资不在这个里面的在职员工的平均薪资
SELECT AVG(salary) avg_salary
FROM salaries
WHERE salary NOT IN(
SELECT *
FROM max_salary
)
AND to_date='9999-01-01'
AND salary NOT IN(
SELECT *
FROM min_salary
)
这个题目还可以用窗口函数的方法 但是更加复杂了

京公网安备 11010502036488号