Ranking in Oracle

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