Найти n-ую максимальную зарплату для сотрудника - PullRequest
0 голосов
/ 15 ноября 2018

Я не могу найти запрос, и я попробовал приведенный ниже запрос, но он не работает

SELECT DISTINCT(Salary) FROM table ORDER BY Salary DESC LIMIT n,1

как найти n-е значение.

Например: у меня 7 записей и я хочу получить 4-ую самую высокую зарплату.

EID - ELOC --ESAL
A001 TNP10 500000
A002 KAP10 700000
A003 TNP20 600000
A004 TNP10 500000
A005 KAP20 800000
A006 KAP10 900000
A007 APP10 700000

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

/ * Четвёртое Высшее что угодно * /

with cte as (
select a.* , row_number() over (order by salary desc) rn from mytable a
) select * from cte where rn = 4
0 голосов
/ 15 ноября 2018

2-я зарплата (30), например:

with mytab (salary) as (
          select 10 from sysibm.sysdummy1
union all select 10 from sysibm.sysdummy1
union all select 20 from sysibm.sysdummy1
union all select 30 from sysibm.sysdummy1
union all select 30 from sysibm.sysdummy1
union all select 40 from sysibm.sysdummy1
)
select distinct salary
from (
select salary, dense_rank() over (order by salary desc) r_
from mytab
) where r_=2;
...