Extrahieren der letzten Zeile für jede ID in Postgresql
Betrachten Sie einen Datensatz mit den Spalten „id“, „date“ und „other_info“. Das Ziel besteht darin, die letzten Informationen (Zeile) für jede eindeutige ID zu extrahieren.
Um dies in Postgresql zu erreichen, werden üblicherweise zwei Methoden verwendet:
Distinct On Operator
Postgresql bietet den Distinct-On-Operator, mit dem Sie angeben können, dass nur eindeutige Werte einer bestimmten Spalte(n) zurückgegeben werden. In diesem Fall kann der Operator wie folgt verwendet werden:
select distinct on (id) id, date, another_info from the_table order by id, date desc;
Diese Abfrage stellt sicher, dass nur die letzte Instanz jeder eindeutigen ID zurückgegeben wird, sortiert in absteigender Reihenfolge nach Datum.
Fensterfunktionen
Alternativ können Sie Fensterfunktionen verwenden, um das gleiche Ergebnis zu erzielen. Mit einer Fensterfunktion können Sie Berechnungen oder Aggregationen für eine partitionierte Reihe von Zeilen durchführen. In diesem Fall kann die folgende Abfrage verwendet werden:
select id, date, another_info from ( select id, date, another_info, row_number() over (partition by id order by date desc) as rn from the_table ) t where rn = 1 order by id;
Diese Abfrage verwendet die Funktion row_number(), um jeder Zeile innerhalb jeder ID-Partition eine fortlaufende Nummer zuzuweisen. Die where-Klausel filtert die Ergebnisse so, dass nur die Zeilen mit dem höchsten rn-Wert (d. h. die letzte Zeile für jede ID) enthalten sind.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich die letzte Zeile für jede ID in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!