`
ollevere
  • 浏览: 261406 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oracle sql 按某个字段分组然后从每组取出最大的一条纪录

 
阅读更多

 

oracle sql(按某个字段分组然后从每组取出最大的一条纪录)? 
比如表  mo_partprg
字段有:listid recid
        1       1

        1       2

        2       3

        2       4

        2       5

想得到的数据是     按照   listid  分组   然后取出每组中recid最大的那几条纪录。结果应该是这两条纪录: 
字段:listid  recid
        1       2

        2       5


写法如下:

 

select  listid,recid 
from ( select listid,recid,row_number() over(partition by listid order by    recid desc) rn
          from mo_partprg)   t1 where rn=1;
 

 

 

 

 


 

说明:

row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开始排序)。 

rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内) 

dense_rank()也是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的。 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics