グループ化された 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 キーワードと競合する可能性があるため、列名として group
と date
を使用することは一般的に推奨されません。 代わりに group_id
と record_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_id
と record_date
がサブクエリで識別された最大の日付と一致する行のみを選択します。 これにより、指定された基準を満たす、各グループの最新レコードの完全な行データが提供されます。 other_column
は、取得する追加の列を表します。 data_table
、group_id
、record_date
、check_value
、other_column
を実際のテーブル名と列名に置き換えてください。
以上がSQLでグループ化されたデータセットから最大日付と対応するデータを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。