Ранг NULL Значение также при использовании ранга в Oracle SQL - PullRequest
0 голосов
/ 02 декабря 2018

Я новичок и изучаю SQL.Практикуя SQL на тренировочной платформе, я натолкнулся на следующий вопрос: написать SQL-запрос, чтобы получить второй по величине оклад из таблицы Employee.

|Id  | Salary 
| 1  | 100   
| 2  | 200 
| 3  | 300 

Например, для приведенной выше таблицы Employee запросдолжен вернуть 200, как вторая самая высокая зарплата.Если второго по величине оклада нет, запрос должен вернуть ноль.

|SecondHighestSalary ||200 |

Я собираюсь использовать функцию Oracle Analytical для написания запроса.Написанный мною запрос выглядит следующим образом:

select Salary as SecondHighestSalary 
from (SELECT salary, dense_rank() over(order by salary desc)  myrank 
FROM Employee)
where myrank =2;

Мой запрос не может обработать тестовый случай со значениями NULL и выдает ошибку.Кто-нибудь может ответить на мой вопрос?

1 Ответ

0 голосов
/ 02 декабря 2018

Ваш запрос возвращает без строк , когда нет второго по величине значения.Если вы хотите одну строку с NULL, вам нужно это сделать.Простым методом будет функция агрегирования:

select max(Salary) as SecondHighestSalary 
from (SELECT salary, dense_rank() over(order by salary desc) as myrank 
      from Employee
     ) e
where myrank = 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...