”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在Oracle SQL中如何根据时间戳获取每个组的最新值?

在Oracle SQL中如何根据时间戳获取每个组的最新值?

发布于2025-04-13
浏览:969

[2

在Oracle SQL How to Retrieve the Latest Value for Each Group Based on Timestamp in Oracle SQL?
中提取每个组的最新条目

本教程演示了一个常见的数据库任务:根据时间戳检索每个组的最新记录。 我们将以一个包含ID,时间戳和数量的表格为例。

挑战:

给出了一个带有ID的表,Timestamp(“ date”)和数量(“数量”)列,我们如何为每个唯一ID有效地选择最新数量(及其相关的时间戳)?

解决方案:

可以使用以下方法来实现这一点:

由时间戳排名:为每个ID组中的每一行分配一个排名,按时间戳以降序订购。选择顶级等级:

过滤结果,以仅包含每个ID的最高等级的行。这些行代表最新条目。

    以下Oracle SQL查询实现此解决方案:
  1. 选择x.id,x。“ date”,x.quantity 从 ( 选择 ID, “日期”, 等级()超过(按ID订单按“日期” desc分区)为RNK, 数量 来自数量 )x 其中x.rnk = 1;
  2. 可以调整此基本查询以满足更复杂的需求:
  3. 基于时间的过滤:
  4. 在其中添加一个
从内部查询将结果限制为特定时间段。

与其他表:

通过在
SELECT x.id, x."date", x.quantity
FROM (
    SELECT
        id,
        "date",
        RANK() OVER (PARTITION BY id ORDER BY "date" DESC) AS rnk,
        quantity
    FROM qtys
) x
WHERE x.rnk = 1;
此方法提供了一种强大而有效的方法,可以根据Oracle SQL中的时间戳检索每个组的最新值,适用于各种数据分析和操纵任务。
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3