Oracle 分组排序函数
1.row_number() over(partition by col1 order by col2)
col1是分组字段,col2是排序字段
实例:从student表里面对学号sNo分组,对创建日期排序created_date
SELECT s.*, row_number() OVER(PARTITION BY sNo ORDER BY created_date desc) as rk FROM student s;
2.rank() over(partition by col1 order by col2)
rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)
rank与row_number的区别是,rank如果有多条记录排序他是跳跃的方式如下:
row_number方式:
1
2
3
4
rank方式:
1
1
1
4