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

Oracle SQLで各IDの最新の数量を取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-21 15:26:12
オリジナル
858 人が閲覧しました

How to Retrieve the Latest Quantity for Each ID in Oracle SQL?

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

このガイドでは、Oracle SQL データベース内の一意の ID ごとに最新の数量を効率的に取得する方法を説明します。 次の構造を持つ「qtys」というテーブルがあると仮定します:

  • ID: 各レコードの一意の識別子。
  • TS: 数量がいつ記録されたかを示すタイムスタンプ。
  • QTY: 数量の値。

目標は、すべての個別の QTY について、最新の数量 (TS) とそれに対応するタイムスタンプ (ID) を取得することです。

解決策:

次のクエリは、MAX() 関数と GROUP BY 句を利用してこれを実現します。

<code class="language-sql">SELECT
    id,
    MAX(TS) AS "Latest Timestamp",
    MAX(QTY) KEEP (DENSE_RANK LAST ORDER BY TS) AS "Latest Quantity"
FROM
    qtys
GROUP BY
    id;</code>
ログイン後にコピー

このクエリは、データを ID でグループ化し、グループごとに最大のタイムスタンプ (MAX(TS)) を選択します。 重要なのは、MAX(QTY) KEEP (DENSE_RANK LAST ORDER BY TS) は、複数のエントリが同じ最大タイムスタンプを共有している場合でも、最新 タイムスタンプに関連付けられた数量が確実に取得されるようにすることです。

代替アプローチ:

1. 過去 X 分間のフィルタリング:

結果を過去 X 分以内のエントリに制限するには、WHERE 句を組み込みます。

<code class="language-sql">SELECT
    id,
    MAX(TS) AS "Latest Timestamp",
    MAX(QTY) KEEP (DENSE_RANK LAST ORDER BY TS) AS "Latest Quantity"
FROM
    qtys
WHERE
    TS > SYSTIMESTAMP - INTERVAL '30' MINUTE
GROUP BY
    id;</code>
ログイン後にコピー

'30' MINUTE を希望の時間間隔に置き換えます。

2. 別のテーブルとの結合:

別のテーブルからデータを組み込む必要がある場合 (例: idname 列を持つ "names")、JOIN:

を使用します。
<code class="language-sql">SELECT
    t1.id || '-' || t2.idname AS "ID-IDNAME",
    MAX(t1.TS) AS "Latest Timestamp",
    MAX(t1.QTY) KEEP (DENSE_RANK LAST ORDER BY t1.TS) AS "Latest Quantity"
FROM
    qtys t1
JOIN
    names t2 ON t1.id = t2.id
GROUP BY
    t1.id || '-' || t2.idname;</code>
ログイン後にコピー

これは、id 列に基づいて "qtys" と "names" を結合し、結合された識別子の IDidname を連結します。 次に、MAX() 関数が結合されたデータに対して動作します。 特定のデータベース スキーマに一致するようにテーブル名と列名を必ず調整してください。

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

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