「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > クエリでPostgreSQLグループの各グループの最初の行を選択する方法は?

クエリでPostgreSQLグループの各グループの最初の行を選択する方法は?

2025-02-10に投稿されました
ブラウズ:490

How to Select the First Row of Each Group in a PostgreSQL GROUP BY Query?

PostgreSql

のグループによってグループの最初の行を選択します

PostgreSQLでは、操作によってグループ内の各グループの最初の行を選択することが一般的な要件です。これを行うには、強力な句句を除外することができます。

SELECT DISTINCT ON (customer) id, customer, total
FROM purchases
ORDER BY customer, total DESC

句を明確にすることで、どの式が重複と見なされるかを定義することができます。この場合、 customer 列を指定します。これは、同じ顧客値を持つ行のみが複製と見なされることを意味します。

順序句は、行が処理される順序を定義します。各顧客グループの最初の行は、最高の合計値を持つ行になります。複数の行の最大合計値がある場合、決定的な係数は id 列が定義される順序になります。

キーポイント

  • であることは、どの式が複製を決定するかを指定できるPostgreSQLの拡張です。
  • 式で明確な式で順序で句の順序に一致する必要があります。
  • 条項による句を使用して、各グループの優先度を決定することができます。
  • または orderで句には句ではないにない式を含めることができます。
  • クエリで使用されるインデックスは、パフォーマンスに大きく影響します。
  • 顧客合計、および id 列に及ぶマルチコラムインデックスがクエリと同じ順序で最高のパフォーマンスを提供します。

追加の指示

は、 on メソッドは、列の枢機inal(顧客あたり少数の行)を持つデータにとって非常に効率的です。ただし、 customer 列(顧客あたりの多数の行)のカーディナリティが低いデータの場合、他のクエリテクニックがより効率的になる場合があります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3