Oracle 数据库数据排名函数:rank() 和dense_rank() 。
Oracle 数据库数据排名函数: rank() 和dense_rank() 。
--------------------------------------------间断排名(也称强制排名) rank() --------------------------------------------
SQL: SELECT empno,ename,sal,rank() over(ORDER BY nvl(sal,0) DESC) x FROM emp;
EMPNO |
ENAME |
SAL |
X |
7369 |
SMITH |
8000 |
1 |
7839 |
KING |
8000 |
1 |
7782 |
CLARK |
7450 |
3 |
7788 |
SCOTT |
7000 |
4 |
7698 |
BLAKE |
6850 |
5 |
7902 |
FORD |
6000 |
6 |
7566 |
JONES |
5975 |
7 |
7499 |
ALLEN |
5600 |
8 |
7844 |
TURNER |
5500 |
9 |
7521 |
WARD |
5250 |
10 |
7654 |
MARTIN |
5250 |
10 |
7876 |
ADAMS |
4100 |
12 |
9000 |
xiaoming |
|
13
|
--------------------------------------------不间断排名 dense_rank() -----------------------------------------------
SQL: SELECT empno,ename,sal,dense_rank() over(ORDER BY nvl(sal,0) DESC) x FROM emp;
EMPNO |
ENAME |
SAL |
X |
7369 |
SMITH |
8000 |
1 |
7839 |
KING |
8000 |
1 |
7782 |
CLARK |
7450 |
2 |
7788 |
SCOTT |
7000 |
3 |
7698 |
BLAKE |
6850 |
4 |
7902 |
FORD |
6000 |
5 |
7566 |
JONES |
5975 |
6 |
7499 |
ALLEN |
5600 |
7 |
7844 |
TURNER |
5500 |
8 |
7521 |
WARD |
5250 |
9 |
7654 |
MARTIN |
5250 |
9 |
7876 |
ADAMS |
4100 |
10 |
9000 |
xiaoming |
|
11 |