【发布时间】:2022-01-06 01:27:54
【问题描述】:
我正在努力解决 Leetcode 的第二高薪水(https://leetcode.com/problems/second-highest-salary/)。这是我在 postgres 上实现的:
select foo.salary as "SecondHighestSalary"
from
(select salary,
dense_rank() over (order by salary desc) as rank
from Employee) foo
where rank = 2;
但问题是,如果没有 rank = 2 的记录,我需要返回 NULL。 然后我尝试了
select (case
when count(1) = 0 then NULL
else salary
end
)
from
(select salary,
dense_rank() over (order by salary desc) as rank
from Employee) foo
where rank = 2
group by salary;
但它仍然没有返回任何记录。 没有返回记录时如何输出NULL?
【问题讨论】:
-
链接的exercise from leetcode 没有给出正确的表定义。
salary是否可以为 NULL 很重要。鉴于他们要求 NULL 结果,这是一个相当大的遗漏。
标签: sql postgresql