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

PostgreSQL で DISTINCT ON を使用して各カテゴリの最大日付を持つ ID を効率的に選択するにはどうすればよいですか?

DDD
リリース: 2024-12-27 17:10:17
オリジナル
482 人が閲覧しました

How Can I Efficiently Select the ID with the Maximum Date for Each Category in PostgreSQL Using DISTINCT ON?

PostgreSQL で DISTINCT ON を使用してカテゴリ別にグループ化された最大日付を持つ ID を選択する

各カテゴリ内の最大日付を持つ ID を選択するには、 Postgres は、DISTINCT ON と呼ばれる強力な機能を提供します。これを実現するクエリを以下に示します。

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

DISTINCT ON は、指定された列に基づいて行を区別し、後続の行は並べ替え順序に基づいてフィルタリングします。各カテゴリ内の日付の降順で行を並べ替えることにより、DISTINCT ON は各カテゴリの最大の日付を提供します。

注意: NULL 値が発生する可能性があるため、日付列が NULL でないことを確認してください。ソート順序に影響します。必要に応じて、NULLS LAST を追加して NULL 値を処理できます。

DISTINCT ON はシンプルさと効率性を提供します。そのパフォーマンスは、小規模なデータセットで特に効果的です。カテゴリごとに多数の行を含む大規模なデータセットの場合は、「関連するスタック オーバーフローの質問」セクションで説明されているような代替アプローチの方が適切な場合があります。

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

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