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