Это один из популярных вопросов в любом собеседовании по SQL. Я собираюсь записать разные запросы, чтобы узнать n-е наибольшее значение столбца.
Я создал таблицу с именем «Emloyee», выполнив приведенный ниже сценарий.
CREATE TABLE Employee([Eid] [float] NULL,[Ename] [nvarchar](255) NULL,[Basic_Sal] [float] NULL)
Теперь я собираюсь вставить 8 строк в эту таблицу, выполнив инструкцию вставки ниже.
insert into Employee values(1,'Neeraj',45000)
insert into Employee values(2,'Ankit',5000)
insert into Employee values(3,'Akshay',6000)
insert into Employee values(4,'Ramesh',7600)
insert into Employee values(5,'Vikas',4000)
insert into Employee values(7,'Neha',8500)
insert into Employee values(8,'Shivika',4500)
insert into Employee values(9,'Tarun',9500)
Теперь мы найдем 3-й по величине Basic_sal из приведенной выше таблицы, используя разные запросы. Я выполнил приведенный ниже запрос в студии управления, и ниже показан результат.
select * from Employee order by Basic_Sal desc
На изображении выше мы можем видеть, что 3-я по величине базовая зарплата будет 8500. Я пишу 3 разных способа сделать то же самое. Выполнив все три указанных ниже запроса, мы получим тот же результат, т.е. 8500.
Первый способ: - Использование функции номера строки
select Ename,Basic_sal
from(
select Ename,Basic_Sal,ROW_NUMBER() over (order by Basic_Sal desc) as rowid from Employee
)A
where rowid=2