ホームページ > データベース > mysql チュートリアル > SQLでグループ化されたデータセットから最大日付と対応するデータを取得するにはどうすればよいですか?

SQLでグループ化されたデータセットから最大日付と対応するデータを取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-08 13:31:46
オリジナル
243 人が閲覧しました

How to Retrieve the Maximum Date and Corresponding Data from a Grouped Dataset in SQL?

グループ化された SQL レコードからの最新データの抽出

データベース テーブルには、同じグループの複数のエントリが含まれており、それぞれに異なる日付が含まれていることがよくあります。 特定のフィルターを適用しながら、最新の日付を持つレコードからデータを識別して取得することは、一般的なデータ分析タスクです。 このプロセスは SQL を使用して効率的に処理できます。

これは 2 段階のアプローチを使用した解決策です:

まず、各グループの最大の日付を見つけます。

<code class="language-sql">SELECT group_id, MAX(record_date) AS max_date
FROM data_table
WHERE check_value > 0
GROUP BY group_id;</code>
ログイン後にコピー

このクエリは、record_date が 0 より大きい各 group_id の最新の check_value を決定します。 注: SQL キーワードと競合する可能性があるため、列名として groupdate を使用することは一般的に推奨されません。 代わりに group_idrecord_date を使用しました。

次に、この結果を元のテーブルに結合して、完全な行情報を取得します。

<code class="language-sql">SELECT dt.group_id, dt.record_date, dt.check_value, dt.other_column
FROM data_table dt
INNER JOIN (
    SELECT group_id, MAX(record_date) AS max_date
    FROM data_table
    WHERE check_value > 0
    GROUP BY group_id
) AS max_dates ON dt.group_id = max_dates.group_id AND dt.record_date = max_dates.max_date;</code>
ログイン後にコピー

この INNER JOIN は、最初のクエリの結果を元のテーブル (data_table) と結合し、group_idrecord_date がサブクエリで識別された最大の日付と一致する行のみを選択します。 これにより、指定された基準を満たす、各グループの最新レコードの完全な行データが提供されます。 other_column は、取得する追加の列を表します。 data_tablegroup_idrecord_datecheck_valueother_column を実際のテーブル名と列名に置き換えてください。

以上がSQLでグループ化されたデータセットから最大日付と対応するデータを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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