Получить второе по величине значение в таблице MySQL - PullRequest
23 голосов
/ 19 марта 2011

У меня есть таблица сотрудников и зарплат, определенная таким образом:

"name" (type: VARCHAR)
"salary" (type: INTEGER)

Какой запрос я могу использовать, чтобы получить вторую самую высокую зарплату в этой таблице?

Ответы [ 28 ]

0 голосов
/ 19 января 2016

Попробуйте это:

Proc sql;
  select employee, salary
  from (select * from test having salary < max(salary)) 
   having salary = max(salary)
  ;
Quit;
0 голосов
/ 27 августа 2015

Получите вторую, третью, четвертую ...... N-ую самую высокую зарплату, используя следующий запрос

SELECT MIN(salary) from employees WHERE salary IN( SELECT TOP N salary FROM employees ORDER BY salary DESC)

Замените N на ваше число, то есть N = 2 для второй самой высокой зарплаты, N = 3 для третьей самой высокойзарплата и тд.Так что для второго по величине оклада использовать

SELECT MIN(salary) from employees WHERE salary IN( SELECT TOP 2 salary FROM employees ORDER BY salary DESC)
0 голосов
/ 09 апреля 2015
SELECT name,salary FROM employee
WHERE salary = (SELECT DISTINCT(salary) FROM employee ORDER BY salary DESC LIMIT 1,1) ORDER BY name
0 голосов
/ 10 января 2015
SELECT name, salary
FROM employees
order by salary desc limit 1,1

и этот запрос должен выполнить вашу работу.Сначала мы сортируем таблицу по убыванию, чтобы человек с самой высокой зарплатой находился наверху, а второй - на второй позиции.Теперь limit a,b означает пропустить начальные элементы a, а затем распечатать следующие элементы b.Так что в этом случае вы должны использовать limit 1,1.

Надеюсь, это поможет.

0 голосов
/ 06 февраля 2013
SELECT SALARY 
FROM (SELECT * 
      FROM EMPLOYEE 
      ORDER BY SALARY 
      DESC LIMIT ***2***) AS TOP_SALARY 
ORDER BY SALARY ASC 
LIMIT 1
0 голосов
/ 20 мая 2014
SELECT username, salary
FROM tblname
GROUP by salary
ORDER by salary desc
LIMIT 0,1 ;
0 голосов
/ 21 марта 2014
with alias as
(
select name,salary,row_number() over(order by salary desc ) as rn from employees
)
select name,salary from alias where rn=n--n being the nth highest salary
0 голосов
/ 19 апреля 2013
SELECT name, salary
FROM EMPLOYEES
WHERE salary = ( 
SELECT DISTINCT salary
FROM EMPLOYEES
ORDER BY salary DESC 
LIMIT 1 , 1 ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...