PostgreSQL で DISTINCT ON を使用してカテゴリ別にグループ化された最大日付を持つ ID を選択する
各カテゴリ内の最大日付を持つ ID を選択するには、 Postgres は、DISTINCT ON と呼ばれる強力な機能を提供します。これを実現するクエリを以下に示します。
SELECT DISTINCT ON (category) id -- , category, date -- any other column (expression) from the same row FROM tbl ORDER BY category, date DESC;
DISTINCT ON は、指定された列に基づいて行を区別し、後続の行は並べ替え順序に基づいてフィルタリングします。各カテゴリ内の日付の降順で行を並べ替えることにより、DISTINCT ON は各カテゴリの最大の日付を提供します。
注意: NULL 値が発生する可能性があるため、日付列が NULL でないことを確認してください。ソート順序に影響します。必要に応じて、NULLS LAST を追加して NULL 値を処理できます。
DISTINCT ON はシンプルさと効率性を提供します。そのパフォーマンスは、小規模なデータセットで特に効果的です。カテゴリごとに多数の行を含む大規模なデータセットの場合は、「関連するスタック オーバーフローの質問」セクションで説明されているような代替アプローチの方が適切な場合があります。
以上がPostgreSQL で DISTINCT ON を使用して各カテゴリの最大日付を持つ ID を効率的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。