Oracle10g означает, что вы можете использовать аналитические/рейтинг/оконные функции, как ROW_NUMBER:
SELECT t.empname,
t.sal,
t.address,
ROW_NUMBER() OVER (ORDER BY t.sal DESC) AS RANK
FROM TABLE t
Для педантичный, замените ROW_NUMBER
с DENSE_RANK, если вы хотите, чтобы увидеть связи получить такое же значение ранга:
Если у двух сотрудников была такая же зарплата, функция RANK вернется к тому же рангу для обоих сотрудников. Однако это приведет к пробелу в разрядах (т. Е. Не последовательных рангов). Это сильно отличается от функции dense_rank, которая генерирует последовательные ранжирования.
Старые школьные средства ранжирования заключается в использовании:
SELECT t.empname,
t.sal,
t.address,
(SELECT COUNT(*)
FROM TABLE x
WHERE x.sal <= t.sal) AS RANK
FROM TABLE t
выход будет соответствовать выходу DENSE_RANK - связи будут иметь одинаковое значение ранга, в то же время последовательно пронумерованы.
Не вводите все крышки и не включайте некоторые разрывы строк. Вы знаете, редактор показывает предварительный просмотр того, как это будет выглядеть ... – rfusca