您好,欢迎来到纷纭教育。
搜索
您的当前位置:首页oracle 根据字段分组取第一条数据及rank函数说明

oracle 根据字段分组取第一条数据及rank函数说明

来源:纷纭教育

当前有这样一个需求,根据外键对子表数据进行分组,取每组中的一条数据就行了,如图:

 

 

 如:COMMANDID = 26的有两条,只取一条数据。

sql语句:

select *
  from(select SYSTEMID,COMMANDID,SUBTYPE,LISTCONTENT,STRING1,STRING2,STRING3,STRING4,STRING5,NUMBER1,NUMBER2,NUMBER3,NUMBER4,NUMBER5,
               rank() over(partition by e.commandid order by e.systemid desc) rankNo
          from COMMAND_NOFILTER_COMMANDINFO e) e
 where e.rankNo = 1 ;

解释下上面sql的意思:
rank() over(partition by e.commandid order by e.systemid desc) rankNo (
partition by 根据什么进行分组,
order by 根据什么进行排序,
rank() over() 进行排名
rankNo 别名

e.rankNo = 1 即是取排名后的第一条数据,即完成了业务需要的sql语句。

使用 rank()over(order by 字段 )得到记录排序

根据某个字段进行排名,排名相同的时候下一个排名累加,比如第三和第四一样,那么第三第四排名都是3,第五排名是5而非4,空出并列所占的名称

如:

 

 dense_rank() over与ran() over的区别:并列以后,下一位并不空出所占的名次.

 

 

 

 

转载于:https://www.cnblogs.com/likui-bookHouse/p/11534130.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务