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!