首頁 >資料庫 >mysql教程 >PostgreSQL中如何為每個類別選擇最大日期的ID?

PostgreSQL中如何為每個類別選擇最大日期的ID?

Barbara Streisand
Barbara Streisand原創
2024-12-27 18:28:11775瀏覽

How to Select the ID with the Maximum Date for Each Category in PostgreSQL?

在PostgreSQL 中選擇按類別分組的最大日期ID

要擷取PostgreSQL 中每個類別的最大日期ID,我們可以使用強大的DISTINCT ON 子句,它是標準DISTINCT 指令的擴充。此子句允許我們根據特定條件聚合數據,同時保留各個行的唯一性。

考慮以下範例資料:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn