这是一个SQL查询,用于查找员工的N最高薪水:
SELECT *
FROM emp t
WHERE 1 = (SELECT COUNT(DISTINCT sal)
FROM emp t2
WHERE t2.sal > t.sal)
我不知道它如何返回结果。如果在WHERE
子句中输入1,它将返回第二高的薪水,而返回2则返回第三高薪,依此类推。
请确保我不确定该查询。
答案 0 :(得分:4)
让我首先说一个更好的查询写方法:
print(repr(string))
您的查询在做什么?逐步进行:
select e.*
from (select e.*, dense_rank() over (order by sal desc) as seqnum
from emp e
) e
where seqnum = 2;
中的每一行进行比较。换句话说,这将保留所有薪水第二高的行。 emp
是编写查询的一种更明智的方法(并且它也具有更好的性能)。