ホームページ > データベース > mysql チュートリアル > Oracle SQLでIDおよびタイムスタンプごとに最新の数量を取得するにはどうすればよいですか?

Oracle SQLでIDおよびタイムスタンプごとに最新の数量を取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-21 15:42:09
オリジナル
292 人が閲覧しました

How to Retrieve the Latest Quantity per ID and Timestamp in Oracle SQL?

Oracle SQL: ID ごとに最新の数量を抽出する

このガイドでは、Oracle SQL のタイムスタンプ付きデータを含むテーブルから一意の ID ごとに最新の数量を効率的に取得する方法を説明します。

核となるアプローチには、ネストされたクエリ戦略が含まれます。

<code class="language-sql">SELECT id, MAX(ts) AS "DATE", MAX(quantity) AS "QUANTITY"
FROM (
    SELECT id, ts, RANK() OVER (PARTITION BY id ORDER BY ts DESC) AS rnk, quantity
    FROM your_table_name
) ranked_data
WHERE rnk = 1
GROUP BY id;</code>
ログイン後にコピー

このクエリは次のように動作します:

  1. 内部クエリ (ranked_data): このサブクエリは、RANK() ウィンドウ関数を使用して、タイムスタンプ (id) の降順で各 ts グループ内の各行にランクを割り当てます。 。 各 id の最新レコードには 1 のランクが与えられます。

  2. 外部クエリ: このクエリは内部クエリの結果をフィルターし、rnk = 1 を持つ行 (最新のレコード) のみを選択します。 次に、結果を id でグループ化し、MAX() を使用して対応するタイムスタンプと数量を取得します。 最新のタイムスタンプが最新の数量も意味すると仮定すると、MAX(quantity)GROUP BY id とともに使用するのが適切であることに注意してください。最新のタイムスタンプは同じだが量が異なる複数の行が存在する可能性がある場合は、別の集計方法が必要になる可能性があります (より複雑なクエリの FIRST_VALUE など)。

機能強化:

1.時間ベースのフィルタリング: 結果を特定の時間枠 (過去 XX 分など) に制限するには、WHERE 句を内部クエリに追加します:

<code class="language-sql">WHERE ts >= SYSTIMESTAMP - INTERVAL 'XX' MINUTE</code>
ログイン後にコピー

2.別のテーブルとの結合: 別のテーブルからのデータ (例: 追加の ID 情報を持つ id_table) を組み込むには、外側のクエリで JOIN を使用します:

<code class="language-sql">SELECT id || '-' || idname AS "ID-IDNAME", MAX(ts) AS "DATE", MAX(quantity) AS "QUANTITY"
FROM (
    SELECT id, ts, RANK() OVER (PARTITION BY id ORDER BY ts DESC) AS rnk, quantity
    FROM your_table_name
) ranked_data
INNER JOIN id_table ON ranked_data.id = id_table.id
WHERE rnk = 1
GROUP BY id || '-' || idname;</code>
ログイン後にコピー

your_table_nameid_table を実際のテーブル名に置き換えてください。 この洗練されたアプローチにより、Oracle SQL で最新の数量データを取得するための堅牢かつ柔軟なソリューションが提供されます。

以上がOracle SQLでIDおよびタイムスタンプごとに最新の数量を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート