我有这个代码返回第n个最大薪水
SELECT first_name,Last_name,salary
FROM Employees E1
WHERE (N-1) = (
SELECT COUNT(DISTINCT(E2.Salary))
FROM Employees E2
WHERE E2.Salary > E1.Salary
);
如果它们具有相同的工资,则返回多个记录。 但是,当我尝试按first_name排序时,它仍会返回不按字母顺序排序的结果。
示例输出
Nancy Greenberg 12000.00
Alberto Errazuriz 12000.00
期望的输出
Alberto Errazuriz 12000.00
Nancy Greenberg 12000.00
我使用了first_name ASC的命令;
答案 0 :(得分:1)
我认为将-1
移动到子查询更简单。将ORDER BY
添加到外部查询应该对结果集进行排序:
SELECT first_name, Last_name, salary
FROM Employees E1
WHERE <N> = (SELECT COUNT(DISTINCT E2.Salary) + 1
FROM Employees E2
WHERE E2.Salary > E1.Salary
)
ORDER BY first_name;
如果这不起作用,请编辑您的问题并提供样本数据。