SQL> create table tangyunoracle
2 (
3 cname VARCHAR2(20),
4 months Number,
5 sales Number
6 );
表已创建。
为测试表中插入一些数据:
SQL> INSERT INTO tangyunoracle VALUES('tangyun',1,100);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('tangyun',2,800);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('tangyun',3,800);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('huananzixun',1,100);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('huananzixun',2,810);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('huananzixun',3,790);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('ty',1,100);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('ty',2,880);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('ty',3,790);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('oracle',1,100);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('oracle',2,810);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('oracle',3,890);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('tgyun',1,120);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('tgyun',2,830);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('tgyun',3,850);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('yun',1,110);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('yun',2,840);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('yun',3,850);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('tang',1,120);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('tang',2,830);
已创建 1 行。
SQL> INSERT INTO tangyunoracle VALUES('tang',3,850);
已创建 1 行。
SQL> COMMIT;
提交完成。
对比三个函数对相同顺序的排名:
SQL> select cname,rank() over(order by sum(sales) desc) rank,dense_rank() over(order by sum(sales) desc) dense_rank,row_number() over(order by sum(sales) desc)row_number from tangyunoracle group by cname;
CNAME RANK DENSE_RANK ROW_NUMBER
-------------------- ---------- ---------- ----------
oracle 1 1 1
ty 2 2 2
tangyun 3 3 3
huananzixun 3 3 4
yun 5 4 5
tang 5 4 6
tgyun 5 4 7
已选择7行。
通过这个例子就可以清楚三者之间的区别了。
----------------End-------------------------------
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24930246/viewspace-1041636/ ,如需转载,请注明出处,否则将追究法律责任。