LAST_VALUE
Gibt den Wert von column aus der letzten Zeile des Fensterrahmens zurück.
PostgreSQL 17.5
LAST_VALUE(column) OVER ([PARTITION BY ...] [ORDER BY ...] [frame])Parameter
- column
- Spalte oder Ausdruck, dessen Wert zurückgegeben wird
- PARTITION BYoptional
- Spalten, nach denen die Zeilen in Partitionen aufgeteilt werden
- ORDER BYoptional
- Reihenfolge der Zeilen in der Partition, die bestimmt, welche Zeile die letzte ist
- frameSchlüsselwortoptional
- Fensterrahmen: ROWS, RANGE oder GROUPS BETWEEN Anfang AND Ende; standardmäßig mit ORDER BY vom Anfang der Partition bis zur aktuellen Zeile samt Zeilen mit demselben ORDER BY-Wert, ohne ORDER BY die ganze Partition; die ganze Partition ausdrücklich ist ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
Rückgabewert
Wert vom Typ von column
Beispiele
Jüngstes Mitglied je Status
PostgreSQL 17.5
SELECT member_name,
status,
birthday,
LAST_VALUE(member_name) OVER (
PARTITION BY status
ORDER BY birthday ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS youngest_in_status
FROM FamilyMembers;Standardrahmen endet bei der aktuellen Zeile
PostgreSQL 17.5
SELECT member_name,
status,
birthday,
LAST_VALUE(member_name) OVER (
PARTITION BY status
ORDER BY birthday
) AS last_in_frame
FROM FamilyMembers;Details
Mit ORDER BY endet der Standardrahmen mit der aktuellen Zeile (und Zeilen mit demselben Wert in ORDER BY), nicht am Ende der Partition. Deshalb gibt die Funktion ohne expliziten Rahmen oft den Wert der aktuellen Zeile zurück. Wie du einen Rahmen festlegst, steht bei ROWS BETWEEN.