ホームページ >データベース >mysql チュートリアル >PostgreSQLで各IDの最後の行を抽出するにはどうすればよいですか?
Postgresql での各 ID の最後の行の抽出
id、date、another_info という名前の列を持つデータセットを考えてみましょう。目的は、一意の ID ごとに最後の情報 (行) を抽出することです。
Postgresql でこれを実現するには、次の 2 つのメソッドが一般的に使用されます:
Distinct On Operator
Postgresql は、特定の列の個別の値のみを返すように指定できる、distinct on 演算子を提供します。この場合、演算子は次のように使用できます:
select distinct on (id) id, date, another_info from the_table order by id, date desc;
このクエリにより、各一意の ID の最後のインスタンスのみが日付の降順で返されることが保証されます。
ウィンドウ関数
または、ウィンドウ関数を使用して同じ結果を得ることができます。ウィンドウ関数を使用すると、分割された行のセットに対して計算や集計を実行できます。この場合、次のクエリを使用できます。
select id, date, another_info from ( select id, date, another_info, row_number() over (partition by id order by date desc) as rn from the_table ) t where rn = 1 order by id;
このクエリは、row_number() 関数を使用して、各 ID パーティション内の各行に連続番号を割り当てます。 where 句は結果をフィルタリングして、最も高い rn 値を持つ行 (つまり、各 ID の最後の行) のみを含めます。
以上がPostgreSQLで各IDの最後の行を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。