1. 程式人生 > >Oracle 中的開窗函式

Oracle 中的開窗函式

Oracle 中的開窗函式

over 函式

SQL中有經常跟over()開窗函式搭配的是row_number(),一般用於去重或者根據某些欄位分組(partition by)然後再進行排序(order by )得到最終的資料。

rank () over() 和 dence_rank() over()

根據業務需求,一般就會用到排名函式rank,或者dence_rank

這兩個函式跟row_number()的區別為:
row_number () over() 形成的形如1,2,3,4…. 這樣的連續不重複的序列

rank 函式形成的是可不連續可重複(order by 的欄位)的序列,rank()over()

形成的是 1,1,3,4,4,4…. 這種形式的可重複的序列(注意:3的位置,這個序列是會重複和間隔)

dence_rank 會形成1,1,2,3,3,3… 這種形式的可重複且連續的序列(注意:2的位置,這個序列是會重複但是序列值是重複的)