首頁 > 資料庫 > mysql教程 > 如何在Oracle SQL中根據時間戳記檢索每個群組的最新值?

如何在Oracle SQL中根據時間戳記檢索每個群組的最新值?

Susan Sarandon
發布: 2025-01-21 15:47:10
原創
244 人瀏覽過

How to Retrieve the Latest Value for Each Group Based on Timestamp in Oracle SQL?

提取 Oracle SQL 中每個群組的最新項目

本教學示範了一個常見的資料庫任務:根據時間戳記檢索每個群組的最新記錄。 我們將使用包含 ID、時間戳記和數量的表作為範例。

挑戰:

給定一個包含 ID、時間戳記(「日期」)和數量(「數量」)列的表,我們如何有效地為每個唯一 ID 選擇最新數量(及其關聯的時間戳記)?

解:

這可以透過以下方法來實現:

  1. 按時間戳排名:為每個 ID 組中的每一行分配一個排名,按時間戳降序排列。
  2. 選擇最高排名: 過濾結果以僅包含每個 ID 排名最高的行。這些行代表最新條目。

以下 Oracle SQL 查詢實作了此解決方案:

<code class="language-sql">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;</code>
登入後複製

擴充查詢:

可以調整此基本查詢以滿足更複雜的需求:

  • 基於時間的篩選: 在內部查詢中加入 WHERE 子句,將結果限制在特定時間段內。
  • 與其他資料表連接: 透過連接 id 欄位來整合其他資料表的資料。 例如,您可以連接到包含 ID 和名稱的表,以在輸出中包含名稱。

此方法提供了一種基於 Oracle SQL 中時間戳檢索每組最新值的穩健且高效的方法,適用於各種資料分析和操作任務。

以上是如何在Oracle SQL中根據時間戳記檢索每個群組的最新值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板