我想添加一个显示记录编号序列的列

时间:2018-03-01 12:09:46

标签: oracle search plsql

我想从我已完成的记录中搜索前5名薪水,但我想要另一列包含这些薪水的编号序列,例如谁在第一位,谁在第二位等等

1 个答案:

答案 0 :(得分:1)

分析函数,例如RANK(或DENSE_RANK或ROW_NUMBER)可能有所帮助。

SQL> select ename, sal,
  2    rank() over (order by sal desc) rnk1,
  3    dense_rank() over (order by sal desc) rnk2,
  4    row_number() over (order by sal desc) rnk3
  5  from emp
  6  order by sal desc;

ENAME             SAL       RNK1       RNK2       RNK3
---------- ---------- ---------- ---------- ----------
KING             5000          1          1          1
SCOTT            3000          2          2          2
FORD             3000          2          2          3
JONES            2975          4          3          4
BLAKE            2850          5          4          5
CLARK            2450          6          5          6
ALLEN            1600          7          6          7
TURNER           1500          8          7          8
MILLER           1300          9          8          9
MARTIN           1250         10          9         10
WARD             1250         10          9         11
ADAMS            1100         12         10         12
JAMES             950         13         11         13
SMITH             800         14         12         14

14 rows selected.

SQL>