Oracle10g means you can use analytic/ranking/windowing functions like ROW_NUMBER:
SELECT t.empname,
t.sal,
t.address,
ROW_NUMBER() OVER (ORDER BY t.sal DESC) AS RANK
FROM TABLE t
For the pedantic, replace ROW_NUMBER
with DENSE_RANK if you want to see ties get the same rank value:
If two employees had the same salary, the RANK function would return the same rank for both employees. However, this will cause a gap in the ranks (ie: non-consecutive ranks). This is quite different from the dense_rank function which generates consecutive rankings.
The old school means of ranking is to use:
SELECT t.empname,
t.sal,
t.address,
(SELECT COUNT(*)
FROM TABLE x
WHERE x.sal <= t.sal) AS RANK
FROM TABLE t
The output will match the DENSE_RANK output -- ties will have the same rank value, while being numbered consecutively.