1.row_number() over()
功能一:排序(无分组)
row_number()over(order by column) 排序,列出序号
over()里头的分组以及排序的执行晚于 where group by order by 的执行
例如:
Select t.id,row_number()over(order by t.id ) from DUP_MQD_YLFL t

功能二:分组排序
row_number()over(partition by column order by column)
partition by 后面的column是需要分组字段
例如
Select t.id,t.name1,row_number() over(partition by t.name1 order by t.id) from DUP_MQD_YLFL t

2.rank() over ()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)
例如:
select t.group_id,t.dir_code,rank()over(partition by t.dir_code order by t.create_time)
from HEC_DUP_COM_PUB_RESULT t

3.dense_rank() over()是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的
select t.group_id,t.dir_code,dense_rank()over(partition by t.dir_code order by t.create_time)
from HEC_DUP_COM_PUB_RESULT t


本文详细介绍了Oracle数据库中分析函数ROW_NUMBER() OVER()的使用,包括如何进行排序和分组排序,以及ROW_NUMBER()、RANK()和DENSE_RANK()的区别,重点讲解了在不同场景下的应用实例。

被折叠的 条评论
为什么被折叠?



