Oracle以多列进行分组,然后组内某列进行排序

Oracle数据库以多列进行分组,然后组内某列进行排序

示例查询语句如下:
select t.*,row_number() over( partition by t.column1,t.clolumn2 order by t.tolumn3 ) from tablename t 

OVER(PARTITION BY... ORDER BY...)直接是无法使用的,需要和其他函数配合使用

与OVER(PARTITION BY... ORDER BY...)匹配使用的函数

row_number() over()、rank() over()和dense_rank() over()等

在上面的例子里,使用ROW_NUMBER()可以对数据编号,但是有一个问题,例子中的MI_ID是不可以重复的,如果在可以重复的情况下,就有并列的情况,这样就无法取出并列的数据,只能取单一排序的数据。所以这里可以换成 rank() over()和dense_rank() 。

你可能感兴趣的:(Oracle,oracle函数,OVER(PARTITION,BY...,ORDER,BY.,oracle函数)