Подтвердить что ты не робот

Как мне найти вторую по величине зарплату из таблицы сотрудников?

Как я могу запросить вторую по величине зарплату от всех сотрудников в моей таблице Employee?

4b9b3361

Ответ 1

Попробуйте следующее:

SELECT max(salary)
FROM emptable
WHERE salary < (SELECT max(salary)
                FROM emptable);

Ответ 2

Простой ответ:

SELECT distinct(sal)
FROM emp
ORDER BY sal DESC
LIMIT 1, 1;

Вы получите только второй максимальный оклад.

И если вам нужно любое 3-е, 4-е или N-е значение, вы можете увеличить первое значение, а затем LIMIT (n-1) т.е. для 4-й зарплаты: LIMIT 3, 1;

Ответ 3

Большинство других ответов кажутся специфичными для БД.

Общий SQL-запрос должен быть следующим:

select
   sal 
from
   emp a 
where
   N = (
      select
         count(distinct sal) 
      from
         emp b 
      where
         a.sal <= b.sal
   )
where
   N = any value

и этот запрос должен быть в состоянии работать с любой базой данных.

Ответ 4

Попробуйте что-то вроде:

SELECT TOP 1 compensation FROM (
  SELECT TOP 2 compensation FROM employees
  ORDER BY compensation DESC
) AS em ORDER BY compensation ASC

По существу:

  • Найдите 2 верхних зарплаты в порядке убывания.
  • Из этих 2 найдите верхнюю зарплату в порядке возрастания.
  • Выбранное значение - это вторая по величине зарплата.

Если зарплаты не различаются, вы можете использовать SELECT DISTINCT TOP ....

Ответ 5

Возможно, вы должны использовать DENSE_RANK.

SELECT *
FROM (
       SELECT
         [Salary],
         (DENSE_RANK()
         OVER
         (
           ORDER BY [Salary] DESC)) AS rnk
       FROM [Table1]
       GROUP BY [Num]
     ) AS A
WHERE A.rnk = 2

Ответ 6

Чтобы найти вторую максимальную зарплату от сотрудника,

SELECT MAX(salary) FROM employee
WHERE salary NOT IN (
    SELECT MAX (salary) FROM employee
)

Чтобы найти первую и вторую максимальную зарплату от сотрудника,

SELECT salary FROM (
    SELECT DISTINCT(salary) FROM employee ORDER BY salary DESC
) WHERE rownum<=2

Эти запросы работают нормально, потому что я использовал

Ответ 7

select max(Emp_Sal) 
from Employee a
where 1 = ( select count(*) 
         from Employee b
         where b.Emp_Sal > a.Emp_Sal)

Да работает человек.

Ответ 8

Попробуйте следующее:

SELECT
    salary,
    employeeid
FROM
    employees
ORDER BY
    salary DESC
LIMIT 2

Затем просто получите вторую строку.

Ответ 9

//Чтобы выбрать имя сотрудника, чей заработок занимает второе место

SELECT name
FROM employee WHERE salary =
       (SELECT MIN(salary) FROM 
             (SELECT TOP (2) salary
              FROM employee
              ORDER BY salary DESC) )

Ответ 10

select distinct(t1.sal) 
from emp t1 
where &n=(select count(distinct(t2.sal)) from emp t2 where t1.sal<=t2.sal);

Вывод: Введите значение для n: если вы хотите выполнить 2-й максимум, введите 2; если вы хотите 5, введите n = 3

Ответ 11

   select * from compensation where Salary = (
      select top 1 Salary from (
      select top 2 Salary from compensation 
      group by Salary order by Salary desc) top2
      order by Salary)

который даст вам строки all со второй самой высокой зарплатой, которую несколько человек могут использовать

Ответ 12

    select max(Salary) from Employee 
where Salary
 not in (Select Max(Salary) from Employee)

Ответ 13

select max(Salary) from Employee 
where Salary
  not in (Select top4 salary from Employee);

потому что ответ следующий

тах (5,6,7,8)

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

Ответ 14

Попробуйте следующее:

select max(Emp_Sal) 
from Employee a
where 1 = ( select count(*) 
         from Employee b
         where b.Emp_Sal > a.Emp_Sal)

Ответ 15

select max(sal) from emp
where sal not in (select max(sal) from emp )

ИЛИ

select max(salary) from emp table 
where sal<(select max(salary)from emp)

Ответ 16

SELECT
    TOP 1 salary
FROM
    (
        SELECT
            TOP 2 salary
        FROM
            employees
    ) sal
ORDER BY
    salary DESC;

Ответ 17

select * from emp 
where sal=(select min(sal) from 
(select sal from(select distinct sal from emp order by sal desc)
where rownum<=n));

n может быть значением, которое вы хотите видеть.

вы можете видеть все поля этого человека, у которого есть nth самая высокая зарплата * сильный текст *