首页 >数据库 >mysql教程 >如何根据时间检索Oracle SQL中每组的最新值?

如何根据时间检索Oracle SQL中每组的最新值?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-21 15:31:09269浏览

How to Retrieve the Latest Values Per Group in Oracle SQL Based on Time?

使用 Oracle SQL 根据时间戳提取每组的最新数据点

本指南演示了检索 Oracle 数据库中每个组的最新值的几种方法,按时间戳排序。

基本查询:

以下查询检索每个 id 的最新值及其关联的日期和数量:

<code class="language-sql">SELECT id, MAX(date) AS "DATE", MAX(quantity) AS "QUANTITY"
FROM qtys
GROUP BY id;</code>

方法1:按特定时间窗口(例如最后XX分钟)过滤

要将结果限制为最近 XX 分钟内的条目,请合并 WHERE 子句:

<code class="language-sql">SELECT id, date, quantity
FROM qtys
WHERE date > (SELECT MAX(date) - INTERVAL 'XX' MINUTE FROM qtys);</code>

方法 2:将 ID 与另一个表中的文本数据组合

要将 ID 附加到名为“idnames”的表中的相应文本,请使用以下查询:

<code class="language-sql">SELECT t1.id || '-' || t2.idname AS "ID-IDNAME",
       MAX(t1.date) AS "DATE",
       MAX(t1.quantity) AS "QUANTITY"
FROM qtys t1
INNER JOIN idnames t2 ON t1.id = t2.id
GROUP BY t1.id;</code>

说明性结果:

预期的输出格式类似于:

<code>ID-IDNAME  DATE                QUANTITY
---------- ------------------- ----------
1-testid1  2010-01-04 11:00        152
2-testid2  2010-01-04 11:00        210
3-testid3  2010-01-04 10:30        214
4-testid4  2010-01-04 10:45        122</code>

以上是如何根据时间检索Oracle SQL中每组的最新值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn