【问题标题】:How to fetch latest two records based on timestamp in sql [duplicate]如何根据sql中的时间戳获取最新的两条记录[重复]
【发布时间】:2019-11-21 09:58:01
【问题描述】:

我在表中有这些记录,我想使用时间戳从该表中获取最新的两条记录(前 4 行)

44121993    GEO     21-NOV-19 02.16.55.496000000 PM
44121993    PRODCT  21-NOV-19 02.16.55.496000000 PM
44121993    GEO     21-NOV-19 02.16.55.495000000 PM
44121993    PRODCT  21-NOV-19 02.16.55.495000000 PM
44121993    GEO     21-NOV-19 02.16.55.494000000 PM
44121993    PRODCT  21-NOV-19 02.16.55.494000000 PM

【问题讨论】:

    标签: sql oracle timestamp greatest-n-per-group


    【解决方案1】:

    在我看到标签 "greatest-n-per-group" 之后,我建议使用 DENSE_RANKPARTITION BY 来获取每个组的前 n 条记录,如下所示: p>

    SELECT * FROM
        ( SELECT
              T.*,
               DENSE_RANK() OVER(
                   PARTITION BY COL1 -- COL1 IS THE FIRST COLUMN FROM YOUR EXAMPLE 
                                     -- or COLUMN ON WHICH GROUPING NEED TO BE DONE
                   ORDER BY TIMESTAMP_COL DESC) RN
            FROM  YOUR_TABLE T
        )
    WHERE RN <= 2
    

    干杯!!

    【讨论】:

      【解决方案2】:

      你可以使用dense_rank():

      select *
      from (
          select 
              t.*,
              dense_rank() over(order by timestamp_col desc) rn
          from mytable t
      ) t
      where rn <= 2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-30
        • 1970-01-01
        • 2014-04-07
        • 1970-01-01
        • 2020-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多