从SQL中的最高薪水中查找10,000到10,000之间的薪水

时间:2016-05-03 23:32:41

标签: sql oracle

我在这个例子中使用了1个表,我们只使用FName,LName和Salary。我有一种感觉,我将使用嵌套查询找到MAX(薪水)。我应该在SELECT语句或WHERE语句中使用它以及如何指定+/-范围?

2 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。像这样:

SELECT *
FROM MyTable T
WHERE T.Salary > ((
  SELECT MAX(Salary)
  FROM MyTable
) - 10000);

未经测试但应该有效 - 想法是获得最高工资,然后只选择最高工资10,000以内的工资。换句话说,选择工资大于最高工资减去10,000。

答案 1 :(得分:1)

我建议使用分析函数:

select t.*
from (select t.*, max(salary) over () as maxs
      from t
     ) t
where salary > maxs - 1000;

分析函数通常比子查询更好地进行优化。