首頁 > 資料庫 > mysql教程 > 如何選擇 PostgreSQL Group By 查詢中的第一行?

如何選擇 PostgreSQL Group By 查詢中的第一行?

Barbara Streisand
發布: 2025-01-25 20:09:15
原創
547 人瀏覽過

How to Select the First Row in a PostgreSQL Group By Query?

在PostgreSQL分組查詢中選擇第一行

處理分組資料時,通常需要檢索特定行,例如每個群組中的第一行或最後一行。本教學課程旨在解答如何在PostgreSQL中的分組查詢中選擇第一行。

解:DISTINCT ON

PostgreSQL提供了一個方便的功能,稱為DISTINCT ON,它允許選擇群組內重複行的第一個(或最後一個)出現。文法如下:

<code class="language-sql">SELECT DISTINCT ON (DISTINCT_COLUMNS) COLUMNS
FROM TABLE
ORDER BY GROUPING_COLUMN, SORT_ORDER;</code>
登入後複製

應用於給定問題

在提供的範例中,我們希望根據最高總值檢索purchases表中每個客戶的第一行。我們可以使用DISTINCT ON實作如下:

<code class="language-sql">SELECT DISTINCT ON (customer)
       id, customer, total
FROM   purchases
ORDER  BY customer, total DESC, id;</code>
登入後複製

此查詢將輸出所需結果:

FIRST(id) customer FIRST(total)
1 Joe 5
2 Sally 3

解釋

  • DISTINCT ON (customer) 指定我們希望以customer列分組結果並選擇不同的值。
  • ORDER BY customer, total DESC, id 先按customer排序結果(用於分組),然後按total降序排序(找出總值最高的第一行),最後按id排序以解決衝突(如果有)。

附加說明

  • DISTINCT ON 子句必須包含在ORDER BY 子句中,但標準不需要額外的id列。
  • 如果total欄位可以包含空值,則應將NULLS LAST加到ORDER BY 子句中:
<code class="language-sql">ORDER BY customer, total DESC NULLS LAST, id;</code>
登入後複製

結論

PostgreSQL中的DISTINCT ON功能提供了一種高效且靈活的方法來選擇分組查詢中的第一行(或最後一行)。透過利用此功能,開發人員可以輕鬆分析分組資料並檢索必要的資訊。

以上是如何選擇 PostgreSQL Group By 查詢中的第一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板