Heim >Datenbank >MySQL-Tutorial >Wie wähle ich die ID mit dem maximalen Datum für jede Kategorie in PostgreSQL aus?

Wie wähle ich die ID mit dem maximalen Datum für jede Kategorie in PostgreSQL aus?

Barbara Streisand
Barbara StreisandOriginal
2024-12-27 18:28:11775Durchsuche

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

ID mit maximalem Datum gruppiert nach Kategorie in PostgreSQL auswählen

Um die ID mit dem maximalen Datum für jede Kategorie in PostgreSQL abzurufen, können wir Verwenden Sie die leistungsstarke DISTINCT ON-Klausel, die eine Erweiterung des Standardbefehls DISTINCT darstellt. Diese Klausel ermöglicht es uns, Daten basierend auf bestimmten Kriterien zu aggregieren und gleichzeitig die Einzigartigkeit einzelner Zeilen zu bewahren.

Berücksichtigen Sie die folgenden Beispieldaten:

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

Zur Auswahl der ID mit dem maximalen Datum für jede Zeile Kategorie mit DISTINCT ON die Syntax ist:

SELECT DISTINCT ON (category)
       id
FROM   tbl
ORDER  BY category, date DESC;

Die resultierende Ausgabe wird sein:

id
7
2
6

Diese Abfrage sortiert die Daten zuerst nach Kategorie in aufsteigender Reihenfolge und dann nach Datum in absteigender Reihenfolge. Die DISTINCT ON-Klausel stellt dann sicher, dass für jede einzelne Kategorie nur die Zeile mit dem maximalen Datum angezeigt wird, was zur gewünschten Ausgabe führt.

Wenn die Datumsspalte NULL-Werte zulässt, ist es wichtig, die NULL-Werte einzubeziehen LAST-Klausel, um sicherzustellen, dass NULL-Werte zuletzt sortiert werden. Zum Beispiel:

SELECT DISTINCT ON (category)
       id
FROM   tbl
ORDER  BY category, date DESC NULLS LAST;

Das obige ist der detaillierte Inhalt vonWie wähle ich die ID mit dem maximalen Datum für jede Kategorie in PostgreSQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn