oracle row_number() over(partition by .. order by ..)和rank() over(partition by .. order by ..) 和dens

新建一個測試表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 ..)排序是順序的,排序比較有意義;

相關文章
相關標籤/搜索