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

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ollevere/article/details/84322361

 

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是没有重复值的。 

 

 

 

 

 

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页