Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。
Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。
Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。
用SCOTT/TIGER登录。
查询表EMP:
SELECT * FROM EMP;
结果:
创建EMP的副本EMP1:
CREATE TABLE EMP1 AS SELECT * FROM EMP;
然后修改一些数据:
UPDATE EMP1 SET SAL=6000 WHERE EMPNO=7839;
UPDATE EMP1 SET SAL=2000 WHERE EMPNO=7499;
COMMIT;
查询表EMP1:
SELECT * FROM EMP1;
结果:
然后用分析函数查询:
SELECT JOB, SUM(SAL), RANK() OVER (ORDER BY SUM(SAL) ASC),
DENSE_RANK() OVER (ORDER BY SUM(SAL) ASC),
ROW_NUMBER() OVER (ORDER BY SUM(SAL) ASC)
FROM EMP1 GROUP BY JOB;
结果: