ホームページ > データベース > mysql チュートリアル > PostgreSQLで各カテゴリの最大日付を持つIDを見つけるにはどうすればよいですか?

PostgreSQLで各カテゴリの最大日付を持つIDを見つけるにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-31 03:03:14
オリジナル
190 人が閲覧しました

How to Find the ID with the Maximum Date for Each Category in PostgreSQL?

PostgreSQL でカテゴリごとにグループ化された最大日付を持つ ID を選択する

テーブル内の各カテゴリの最大日付を持つ ID を決定するために、PostgreSQL は適切なアプローチを提供します。サンプル データを考えてみましょう:

id category date
1 a 2013-01-01
2 b 2013-01-03
3 c 2013-01-02
4 a 2013-01-02
5 b 2013-01-02
6 c 2013-01-03
7 a 2013-01-03
8 b 2013-01-01
9 c 2013-01-01

望ましい結果を達成するには、PostgreSQL の DISTINCT ON 句を利用します。この句を使用すると、指定された式に基づいて一意の行を選択し、結果を別の列でグループ化できます。この場合、行をカテゴリ別にグループ化し、各グループ内の最大の日付を持つ個別の ID を選択します。

これを実現するクエリは次のとおりです。

SELECT DISTINCT ON (category)
       id  -- , category, date  -- any other column (expression) from the same row
FROM   tbl
ORDER  BY category, date DESC;
ログイン後にコピー

DISTINCT ON 句それぞれの異なるカテゴリ値の最初の出現のみが選択されるようにします。 ORDER BY 句は、結果をまずカテゴリ別に昇順 (アルファベット順) に並べ替え、次に日付別に降順に並べ替えます。この順序により、各カテゴリの最新の日付を持つ行が最初に表示されます。

このクエリを実行すると、次の結果が得られます:

id
7
2
6

これらの ID (7、2、6) は次のことを表します。それぞれカテゴリ a、b、c の最大日付。

以上がPostgreSQLで各カテゴリの最大日付を持つIDを見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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