我想添加一个显示记录编号序列的列[关闭]

问题描述 投票:-3回答:1

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

oracle search plsql
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.