Как я могу запросить вторую по величине зарплату от всех сотрудников в моей таблице Employee?
Как мне найти вторую по величине зарплату из таблицы сотрудников?
Ответ 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 самая высокая зарплата * сильный текст *