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
