ホームページ > データベース > mysql チュートリアル > PostgreSQL で特定の列で順序付けされたグループごとの上位 N 行を選択する方法

PostgreSQL で特定の列で順序付けされたグループごとの上位 N 行を選択する方法

Susan Sarandon
リリース: 2025-01-15 11:19:45
オリジナル
212 人が閲覧しました

How to Select the Top N Rows per Group Ordered by a Specific Column in PostgreSQL?

PostgreSQL のグループ制限: カスタム列でソートされた各グループの上位 N 行を選択します

カスタム列順序に基づいて各グループの上位 N 行を取得するために、PostgreSQL はユーザー (特に PostgreSQL 8.4 以降を使用しているユーザー) にソリューションを提供します。

列「id」、「section_id」、および「name」を含むテーブルの例を考えてみましょう。

id section_id name
1 1 A
2 1 B
3 1 C
4 1 D
5 2 E
6 2 F
7 3 G
8 2 H

提供されたデータに基づいて、目的の出力は、「section_id」ごとに最初の 2 行 (「name」でソート) を選択することです。

PostgreSQL 8.4 以降のソリューション

<code class="language-sql">SELECT
  *
FROM (
  SELECT
    ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) AS r,
    t.*
  FROM
    xxx t
) x
WHERE
  x.r <= 2;</code>
ログイン後にコピー

この高度なソリューションでは、「PARTITION BY」および「ORDER BY」句を含む「ROW_NUMBER()」関数を利用して、目的の結果セットを取得します。 「xxx」テーブルの各行には、それぞれの「section_id」グループ内のランクが割り当てられ、行は「name」でソートされます。その後、条件「x.r

以上がPostgreSQL で特定の列で順序付けされたグループごとの上位 N 行を選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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