ホームページ >データベース >mysql チュートリアル >Oracle SQLで時間に基づいてグループごとの最新の値を取得する方法

Oracle SQLで時間に基づいてグループごとの最新の値を取得する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-21 15:31:09229ブラウズ

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 と別のテーブルのテキスト データを組み合わせる

「idnames」という名前のテーブルからの対応するテキストを ID に追加するには、次のクエリを使用します。

<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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。