Причина вы не получаете правильный результат, потому что вы спасаете salary
в string
. Таким образом, 200
в string
будет более 1000
в string
. Чтобы сравнить 2 строки, их символы преобразуются в ascii
символов, а затем сравниваются на основе ascii
символов. Таким образом, ascii
значение 2
в 200
более 1
в 1000
. Следовательно, неверный результат.
Чтобы дать свой ответ, вы получите оценку в порядке убывания.
SQLFiddle Demo for Top 5
select salary,
rank() over(order by cast(salary as float) desc)
as rnk from employee
Вы можете использовать это, чтобы получить что-нибудь. Как топ-5
select * from
(select salary,rank() over(order by cast(salary as float) desc)
as rnk from employee)
where rnk <=5
только второй самый высокий
select * from
(select salary,rank() over(order by cast(salary as float) desc)
as rnk from employee)
where rnk =2
Я также делаю это, но это показывает мне тот же результат, что и низкие зарплаты, отображаемые также на выходе .. – scorpio
любые решения, пожалуйста? – scorpio
Тип столбца зарплаты ??? –