有時候我們需要
先排序,後取值
或者是取分組後的前幾名
文法:
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的資料