zoukankan      html  css  js  c++  java
  • 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的区别:并列以后,下一位并不空出所占的名次.

     
  • 相关阅读:
    HttpSession
    查看端口被哪个进程占用了
    变体类型 Variant VARIANT
    BDE View not exists
    c++builder 解压缩
    nginx的allow和deny配置
    linux下如何启动nginx?
    java如何发起一次http的post请求?
    mysql如何用sql添加字段如何设置字符集和排序规则
    设置Tomcat的UTF-8编码
  • 原文地址:https://www.cnblogs.com/likui-bookHouse/p/11534130.html
Copyright © 2011-2022 走看看