新建一个测试表oracle
create table dim_ia_test2(device_number varchar2(20),desc2 varchar2(20))函数
插入数据后获得:测试
1、oracle row_number() over(partition by .. order by ..)spa
只以电话号码排序,默认升序blog
select device_number,desc2,row_number() over(order by device_number ) rn from dim_ia_test2;排序
以电话号码分组,并排序it
select device_number,desc2,row_number() over(partition by device_number order by device_number ) rn from dim_ia_test2;io
row_number的排序特色为顺序排table
2、rank() over(partition by .. order by ..) test
select device_number,desc2,rank() over(order by device_number ) rn from dim_ia_test2;
select device_number,desc2,rank() over(partition by device_number order by device_number ) rn from dim_ia_test2;
3、dense_rank() over(partition by .. order by ..)
select device_number,desc2,dense_rank() over(order by device_number ) rn from dim_ia_test2;
select device_number,desc2,dense_rank() over(partition by device_number order by device_number ) rn from dim_ia_test2;
以上是三个排序的开窗函数,row_number() over(partition by .. order by ..)因为是顺序排序,分组和排序都比较有意义;
rank() over(partition by .. order by ..)排序是跳跃的,排序比较有意义;
和dense_rank() over(partition by .. order by ..)排序是顺序的,排序比较有意义;