【问题标题】: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_RANK 和 PARTITION 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