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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-12-27 18:28:11767ブラウズ

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

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

PostgreSQL で各カテゴリの最大日付を持つ ID を取得するには、次のようにします。標準の DISTINCT コマンドを拡張した強力な DISTINCT ON 句を使用します。この句を使用すると、個々の行の一意性を維持しながら、特定の基準に基づいてデータを集計できます。

次のサンプル データについて考えてみましょう:

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

各行の最大日付を持つ ID を選択するにはDISTINCT ON を使用したカテゴリの構文は次のとおりです:

SELECT DISTINCT ON (category)
       id
FROM   tbl
ORDER  BY category, date DESC;

結果の出力は次のようになります。 be:

id
7
2
6

このクエリは、まずカテゴリごとに昇順でデータを並べ替え、次に日付ごとに降順で並べ替えます。 DISTINCT ON 句を使用すると、個別のカテゴリごとに最大の日付を持つ行のみが表示され、目的の出力が得られます。

日付列で NULL 値が許可されている場合は、NULL を含めることが重要です。 LAST 句を使用して、NULL 値が最後にソートされるようにします。例:

SELECT DISTINCT ON (category)
       id
FROM   tbl
ORDER  BY category, date DESC NULLS LAST;

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

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