数据库求第N高薪水left join问题

问题遇到的现象和发生背景

img

问题相关代码,请勿粘贴截图
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN (
      # Write your MySQL query statement below.
      select  distinct e1.Salary
      from Employee e1 left join Employee e2 on e1.Salary<e2.Salary
      group by e1.Salary
      having  count(distinct e2.Salary)=N-1
  );
END

运行结果及报错内容

img

我的解答思路和尝试过的方法

以为是count会算null值,但是count会忽略空值

我想要达到的结果

给函数加一个分支。
如果是NULL,走其他语句

用分析函数

select salary
  from (select distinct dense_rank(salary) over(order by salary desc nulls last) nn,
                        salary
          from employee)
 where nn = n