Как я могу запросить вторую по величине зарплату от всех сотрудников в таблице Employee?Как мне найти вторую по величине зарплату из таблицы сотрудников?
ответ
Попробуйте что-то вроде:
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 ...
.
Когда вознаграждение TOP 1 заработано более чем одним сотрудником, этот запрос вернет неправильный результат. –
Если зарплаты не различны, вы можете использовать 'SELECT DISTINCT TOP ...' вместо этого. –
Попробуйте это:
SELECT
salary,
employeeid
FROM
employees
ORDER BY
salary DESC
LIMIT 2
Тогда просто получить вторую строку.
Что делать, если первые две зарплаты одинаковы? – moghya
Возможно, вам стоит использовать 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
Попробуйте это:
SELECT max(salary)
FROM emptable
WHERE salary < (SELECT max(salary)
FROM emptable);
select distinct(t1.sal)
from emp t1
where &n=(select count(distinct(t2.sal)) from emp t2 where t1.sal<=t2.sal);
Выход: Введите значение для п: если вы хотите, второй самый высокий, введите 2; если вы хотите 5, введите п = 3
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)
который даст вам все строки с второй самой высокой зарплаты, которую некоторые люди могут поделиться
select max(Salary) from Employee
where Salary
not in (Select Max(Salary) from Employee)
select max(Salary) from Employee
where Salary
not in (Select top4 salary from Employee);
, потому что ответ заключается в следующем
макс (5,6,7,8)
так пятые самый высокий рекорд будет будет отображаться, первый четыре не будет считаться
Попробуйте это:
select max(Emp_Sal)
from Employee a
where 1 = (select count(*)
from Employee b
where b.Emp_Sal > a.Emp_Sal)
Это не работает, если есть дубликаты зарплат. Допустим, что есть три одинаковых максимальной зарплаты 30000, и вы находите второе место. –
Чтобы найти вторую максимальную зарплату от сотрудника,
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
Эти запросы работают нормально, потому что я использовал
на самом деле, если у вас есть таблица: 1. 100 2. 100 3. 50 Ваш запрос будет возвращать ** нуль **, который неправильный ответ в этом случае – kvatashydze
SELECT
TOP 1 salary
FROM
(
SELECT
TOP 2 salary
FROM
employees
) sal
ORDER BY
salary DESC;
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)
Большинство других ответов кажутся дб специфичны.
Общего SQL-запрос должен выглядеть следующим образом:
select sal from emp a where N = (select count(distinct sal) from emp b where a.sal <= b.sal)
where N = any value.
и этот запрос должен быть в состоянии работать на любой базе данных.
Отличный ответ +1 – anubhava
select max(Emp_Sal)
from Employee a
where 1 = (select count(*)
from Employee b
where b.Emp_Sal > a.Emp_Sal)
Да бегущий человек.
// Чтобы выбрать имя сотрудника, чья зарплата составляет второй по величине
SELECT name
FROM employee WHERE salary =
(SELECT MIN(salary) FROM
(SELECT TOP (2) salary
FROM employee
ORDER BY salary DESC))
Простой ответ:
SELECT sal
FROM emp
ORDER BY sal DESC
LIMIT 1, 1;
Вы получите только вторую максимальную зарплату.
И если вам нужно какое-либо 3-е или 4-е или N-е значение, вы можете увеличить первое значение, за которым следует LIMIT (n-1)
т.е.4-й зарплаты: LIMIT 3, 1;
Это хотят работать если у вас есть 2 записи с одинаковой зарплатой. Он хочет дать вам второй макс. –
@mukeshpatel необходимо использовать, чтобы указать на это. – SandeepGodara
Короткие и прекрасные –
select * from emp
where sal=(select min(sal) from
(select sal from(select distinct sal from emp order by sal desc)
where rownum<=n));
п может быть значение, которое вы хотите увидеть ......
вы можете увидеть все поля этого лица, имеющего п-ю самую высокую зарплату * сильный текст *
Детальный блог: http://sforsuresh.in/2nd-highest-salary-from-employee-table/ –