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

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

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

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

Ответы [ 28 ]

3 голосов
/ 22 сентября 2011

Для отображения записей, имеющих второе по величине значение метки:

SELECT username, mark
FROM tbl_one
WHERE mark = (
    SELECT DISTINCT mark
    FROM tbl_one
    ORDER by mark desc
    LIMIT 1,1
); 
2 голосов
/ 28 июня 2013

для 2-й самой высокой зарплаты

 select max(salary) from salary where salary not in (select top 1 salary from salary order by salary desc)

для 3-й самой высокой зарплаты

 select max(salary) from salary where salary not in (select top 2 salary from salary order by salary desc)

и так далее ......

2 голосов
/ 24 апреля 2013

Простое решение приведено ниже в запросе:

select max(salary) as salary from employees where salary<(select max(salary) from employees);
2 голосов
/ 30 ноября 2017
SELECT name, salary 
FROM employees 
where
 salary = (SELECT (salary) FROM employees GROUP BY salary DESC LIMIT 1,1)
2 голосов
/ 28 января 2014

Чтобы получить * N * -ое наибольшее значение, лучше использовать это решение:

SELECT * FROM `employees`  WHERE salary =
         (SELECT DISTINCT(salary) FROM `employees` 
         ORDER BY salary DESC LIMIT {N-1},1);

или вы можете попробовать:

SELECT * FROM `employees` e1 WHERE 
        (N-1) = (SELECT COUNT(DISTINCT(salary)) 
        FROM `employees` e2 
        WHERE e1.salary < e2.salary ); 

N = 2 для второго по величине N = 3 для третьего по величине и т. Д.

1 голос
/ 23 июня 2015

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

SELECT DISTINCT(`salary`)
    FROM `employee`

    ORDER BY `salary` DEC
    LIMIT 1,1
1 голос
/ 15 февраля 2013

Попробуйте это, чтобы получить максимальную зарплату

Я пробовал это перед публикацией и все отлично работает

например. чтобы найти 10-ую максимальную зарплату замените лимит 9,1 ;

mysql> select name,salary from emp group by salary desc limit n-1,1;

1 голос
/ 04 августа 2014
SELECT DISTINCT Salary
FROM emp
ORDER BY salary DESC
LIMIT 1 , 1

Этот запрос также даст второй по величине оклад дублированных записей.

1 голос
/ 29 июня 2013
SELECT MAX(salary) salary
FROM tbl
WHERE salary <
  (SELECT MAX(salary)
   FROM tbl);
0 голосов
/ 21 декабря 2012
SELECT MIN(id) as id FROM students where id>(SELECT MIN(id) FROM students);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...