我只是一个初学者..
我知道SQL
查询以找出第三高薪或第n高薪。但我需要高效查询。
这些是我知道的查询。你能否提出任何其他疑问而不是这些...
根据我的主题教师,此查询效率不高
SELECT *
FROM Employee Emp1
WHERE (N-1) = (
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary
);
这个查询显然效率不高
SELECT MAX(Salary)
FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee );
任何提示?
答案 0 :(得分:0)
你可以试试这个:
SELECT
*
FROM
Employee
ORDER BY
Salary DESC
LIMIT N,1
如果你在Salary
列
<强>更新强>
由于mysql
标记已消失,您可以使用 mhasan ROWNUM
答案 1 :(得分:0)
您可以使用ROW_NUMBER()分析功能根据工资进行排名。 假设你想要第5个最高薪水
Select * From
(
Select col1,col2,
row_number() over( order by salary desc) as rnkSalary
From employees
)z
Where z.rnkSalary=5