「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Oracle SQLのタイムスタンプに基づいて各グループの最新値を取得する方法は?

Oracle SQLのタイムスタンプに基づいて各グループの最新値を取得する方法は?

2025-04-13に投稿されました
ブラウズ:845

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

Oracle SQL

の各グループの最新のエントリを抽出する

このチュートリアルは、一般的なデータベースタスクを示しています。タイムスタンプに基づいて各グループの最新のレコードを取得します。 例として、ID、タイムスタンプ、および数量を含むテーブルを使用します。

チャレンジ:

ID、タイムスタンプ( "日付")、数量( "数量)列のあるテーブルが与えられた場合、すべての一意のIDに対して最新の数量(およびそれに関連するタイムスタンプ)をどのように効率的に選択しますか?

解決:

これは、次のアプローチを使用して達成できます。

    タイムスタンプによるランキング:
  1. 各IDグループ内の各行にランクを割り当て、タイムスタンプによって下降順序で注文しました。
  2. 上位ランクの選択:
  3. 結果をフィルタリングして、各IDの最高ランクの行のみを含む。これらの行は最新のエントリを表します。
  4. 次のOracle SQLクエリがこのソリューションを実装しています:

select x.id、x。 "date"、x.quantity から ( 選択します ID、 "日付"、 rnkとしてrank()over( "date" descによるID注文によるパーティション)、 量 QTYSから )x ここで、x.rnk = 1;
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;
クエリの拡張:

この基本的なクエリは、より複雑なニーズを満たすために適応できます:

    時間ベースのフィルタリング:
  • ここで、句は内部クエリに特定の期間に制限します。
  • 他のテーブルと結合:
  • ID 列に参加して、追加のテーブルからデータを統合します。 たとえば、IDと名前を含むテーブルに参加して、出力に名前を含めることができます。
  • この方法は、さまざまなデータ分析と操作タスクに適用されるOracle SQLのタイムスタンプに基づいて、グループごとの最新の値を取得するための堅牢で効率的な方法を提供します。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3