获取工资第二高的员工姓名

Get the name of the employee with the second highest salary

我必须得到薪水第二高的员工的名字,table 我从那里获取的名字是 emp。我知道第二高薪水的查询是

select max(sal) 
from emp 
where sal < (select max(sal) from emp)

有效,而且 returns 是正确答案。

但我还必须获得员工的姓名。我只是试了一下

select name, max(sal) 
from emp 
where sal < (select max(sal) from emp)

我收到这个错误:

ORA-00937: not a single-group group function

如何删除错误才能同时获得姓名和薪水。 感谢所有提供帮助的人。

使用这个:

with cte (
select ROW_NUMBER() over(order by sal desc)rnum ,name,sal from emp )
select * from cte where rnum = 2

您可以使用 window 函数轻松获得它。尝试这样的事情:

SELECT name, sal
FROM emp
QUALIFY RANK OVER(ORDER BY sal DESC) = 2

这将按薪水对您的行进行排序,然后为每一行赋予一个排名。然后它将 return 具有 ranking = 2 的行。

如果要确保只返回一行,请将 RANK 更改为 ROW_NUMBER

您可以使用

select name,sal from emp where sal = (select max(sal) from emp where sal < (select max(sal) from emp));