Как получить второе место по зарплате? - PullRequest
1 голос
/ 02 мая 2019

Предположим, у нас есть несколько сотрудников в каждом отделе. У нас всего 3 отдела. Ниже приведен пример исходной таблицы с именем «employee»

emp dept_id salary
A    10     1000
B    10     2000
C    10     3000
D    20     7000
E    20     9000
F    20     8000
G    30     17000
H    30     15000
I    30     30000
j    30     30000
k    30     17000

Здесь может быть одинаковая зарплата в том же отделе.

Я использую Wamp-сервер с mysql-5.7.23

И я хочу понравиться:

B    10     2000
F    20     8000
G    30     17000

1 Ответ

2 голосов
/ 02 мая 2019

Я думаю, что есть несколько способов решить проблему.Следующее решение с моей стороны работает нормально.

SELECT *
From employee e2 
WHERE e2.salary = (SELECT distinct salary FROM employee where dept_id=e2.dept_id order by salary desc limit 1,1);

Мне нужна только вторая по величине зарплата с указанием отдела, который является входным массивом следующей операции в моем проекте.Наконец я использую

SELECT e2.dept_id, max(e2.salary) From employee e2 WHERE e2.salary = (SELECT distinct salary FROM employee where dept_id=e2.dept_id order by salary desc limit 1,1) group by e2.dept_id

...