天天看點

oracle分析函數 row_number() over()

有時候我們需要

先排序,後取值

或者是取分組後的前幾名

文法:

row_number() over ( partition by 分組字段 order by 排序字段 [desc])
           

具體用法:

select * from (
  	select r.*,row_number() over(partition by col1 order by col2 desc) rn from table r 
) where rn between 1 and 2;
           

解釋: 先按col1分組,然後按col2降序排序,每組取排名1,2的資料