Как получить наивысшую зарплату сотрудников за столом - PullRequest
34 голосов
/ 14 сентября 2011

Это вопрос, который я получил сегодня днем:

Там в таблице содержатся ID, Имя и Зарплата сотрудников, получают имена сотрудников с наивысшей зарплатой в SQL Server

Вотмой ответ, я просто написал это на бумаге и не уверен, что это совершенно правильно, но, похоже, работает:

SELECT Name FROM Employees WHERE Salary = 
( SELECT DISTINCT TOP (1) Salary FROM Employees WHERE Salary NOT IN
 (SELECT DISTINCT TOP (1) Salary FROM Employees ORDER BY Salary DESCENDING)
ORDER BY Salary DESCENDING)

Я думаю, что это некрасиво, но это единственное решение, которое приходит мне в голову.

Можете ли вы предложить мне лучший запрос?

Большое спасибо.

Ответы [ 53 ]

0 голосов
/ 09 сентября 2013
SELECT `salary` AS emp_sal, `name` , `id`
FROM `employee`
GROUP BY `salary` ORDER BY `salary` DESC
LIMIT 1 , 1 
0 голосов
/ 07 марта 2019

Select * from employee where salary = (Select max(salary) from employee where salary not in(Select max(salary)from employee))

Объяснение:

  • Запрос 1: Выберите максимальную (зарплату) у работника, где зарплатаnot in (Выберите максимальную (зарплату) от сотрудника) - этот запрос будет получать вторую по величине зарплату

  • Запрос 2: Выбор * от сотрудника, где зарплата = (Запрос 1) - Этот запрос будет извлекать все записи, имеющие вторую самую высокую зарплату (вторая самая высокая зарплата может иметь несколько записей)

0 голосов
/ 17 марта 2014

Используя этот SQL, вторая самая высокая зарплата будет получена с именем сотрудника

Select top 1 start at 2 salary from employee group by salary order by salary desc;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...