Я пытаюсь получить запись из таблицы empMaster для n-й самой высокой зарплаты. Но получаю ошибку около 'N' - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь получить запись из таблицы empMaster для n-й самой высокой зарплаты. Но получаю ошибку около 'N'.

SELECT TOP 1 salary
FROM 
    (SELECT DISTINCT TOP n salary 
     FROM empMaster
     ORDER BY salary DESC) AS temp
ORDER BY salary

Сообщение об ошибке:

Неверный синтаксис около 'n'.

Ответы [ 3 ]

1 голос
/ 20 марта 2020

Вы можете написать запрос на SQL Сервер, как указано ниже:

DECLARE @n INT = 5
SELECT salary AS [nthSalary]
FROM
(
SELECT salary, ROW_NUMBER() OVER(ORDER BY salary DESC) AS rownum 
FROM empMaster) AS t
WHERE rownum = @n
0 голосов
/ 20 марта 2020

N будет иметь некоторое значение c. Таким образом, используйте TOP (5) или TOP (@Nvariable).

. Вы можете использовать diff_rank, чтобы найти сотрудников с самой высокой зарплатой:

select emp.*
from (select emp.*, 
             dense_rank() over (order by sal desc) as seq
      from empmaster emp
     ) emp
where emp.seq <= 5; -- Pass variable or change Nth value here

Dense_rank() даст вам сотрудников, что означает, что если больше работников будут иметь одинаковую зарплату, тогда она даст вам все.

0 голосов
/ 20 марта 2020

ВЫБРАТЬ ТОП 1 Зарплата ОТ (ВЫБЕРИТЕ ЗНАЧИТЕЛЬНУЮ ТОП N зарплату ОТ dbo.Employee ЗАКАЗАТЬ по окладу DES C) КАК ПОРЯДОК ЗАКАЗАТЬ О зарплате

// * введите № самой высокой зарплаты в N Как 'N '= 7 (означает седьмую зарплату) // * Неверный синтаксис рядом с' n '. введите Numeri c di git вместо 'n'

...