srikanthakasapu Ответов: 1

Как получить N-ю самую высокую зарплату с помощью рекурсивного CTE


Привет Ребята,

Может ли кто-нибудь из вас сказать мне, как получить N-ю самую высокую зарплату, используя рекурсивный CTE?

Спасибо
Srikanth

King Fisher

привет ,это не ясно,вы можете это объяснить

srikanthakasapu

Привет,

Все просто, у меня есть такой стол

ИМЯ ЗАРПЛАТЫ
ABC 12200
BBB 25463
CCV 5555
Эээ 8568
JJK 42668
LLL 6599
МКК 56985
QWE 25698
Rrr 5445
РТР 12586
Rty 16565
SSS 96887
Юй 545

Теперь мне нужно найти, например, 5-ю самую высокую зарплату или 6-ю самую высокую зарплату или 3-ю, что бы это ни было из таблицы.

Это я должен сделать в рекурсивном CTE.

Пожалуйста, ответьте, если это все еще не ясно.

Спасибо
Srikanth

1 Ответов

Рейтинг:
1

Tomas Takac

Для этого вам не нужен рекурсивный CTE:

with ordered_salary as
(
SELECT name, salary, ROW_NUMBER() OVER(ORDER BY salary DESC) rn
FROM salary_table
)
select name, salary
from ordered_salary
where rn = 5


srikanthakasapu

Привет Томас,

Спасибо за ответ. Я приношу извинения за то, что сказал Некоторые из " да " и "но"...

Я не хочу использовать ни одну из функций ранга, ни верхние операторы и все такое. Я просто рекурсивный CTE.

Возможно, существует несколько способов написания запроса, но мне нужен только рекурсивный CTE.

Спасибо
Шрикант А.