Oracle has 3 analytical functions to rank data. They provide approximately the same results, but with little deviations.
First the code:
select salary, rank() over (order by salary) rank, dense_rank() over (order by salary) dense_rank, row_number() over (order by salary) row_number from hr.employees order by salary;
Inspecting the results shows the deviations. Look at the ties