ホームページ >データベース >mysql チュートリアル >PostgreSQLで各IDの最後の行を抽出するにはどうすればよいですか?

PostgreSQLで各IDの最後の行を抽出するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-28 15:02:11590ブラウズ

How to Extract the Last Row for Each ID in PostgreSQL?

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

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