您的位置:首页 > 数据库 > Oracle

oracle 分析函数 RANK、DENSE_RANK、ROW_NUMBER

2014-03-20 20:43 501 查看
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;


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: