赞
踩
oracle中rank() over与row_number()的区别
(2010-05-05 22:40:50)
PARTITION BY testid ORDER BY creat_time
asc根据列testid分组,按照creat_time降序排列。
rank() OVER对有相同的值,标记相同的值。row_number() 则不会。
故如果要进行排重操作,使用row_number() 将不会有重复记录的产生。
如下:
SQL> SELECT A.*,
2 rank() OVER(PARTITION BY testid ORDER BY creat_time asc)
ROW_NUMBER
3 FROM TEST_20090526 A;
TESTID TESTNAME CREAT_TIME ROW_NUMBER
---------- ---------- ---------- ----------
1 A1 20090520 1
2 A2 20090521 1
2 A3 20090522 2
2 A5 20090522 2
3 A4 20090523 1
SQL> SELECT A.*,
2 row_number() OVER(PARTITION BY testid ORDER BY creat_time asc)
ROW_NUMBER
3 FROM TEST_20090526 A
4 ;
TESTID TESTNAME CREAT_TIME ROW_NUMBER
---------- ---------- ---------- ----------
1 A1 20090520 1
2 A2 20090521 1
2 A3 20090522 2
2 A5 20090522 3
3 A4 20090523 1
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。