NTH_VALUE
Gibt den Wert von column aus der n-ten Zeile des Fensterrahmens zurück.
PostgreSQL 17.5
NTH_VALUE(column, n) OVER ([PARTITION BY ...] [ORDER BY ...] [frame])Parameter
- column
- Spalte oder Ausdruck, dessen Wert zurückgegeben wird
- ninteger
- Nummer der Zeile im Rahmen ab 1
- PARTITION BYoptional
- Spalten, nach denen die Zeilen in Partitionen aufgeteilt werden
- ORDER BYoptional
- Reihenfolge der Zeilen in der Partition
- frameSchlüsselwortoptional
- Fensterrahmen, mit ORDER BY standardmäßig vom Anfang der Partition bis zur aktuellen Zeile
Rückgabewert
Wert vom Typ von column; NULL, wenn der Rahmen weniger als n Zeilen hat
Beispiele
Zweitältestes Mitglied mit dem Standardrahmen
PostgreSQL 17.5
SELECT member_name,
birthday,
NTH_VALUE(member_name, 2) OVER (
ORDER BY birthday
) AS second_oldest
FROM FamilyMembers;Zweitältestes Mitglied in der ganzen Partition
PostgreSQL 17.5
SELECT member_name,
birthday,
NTH_VALUE(member_name, 2) OVER (
ORDER BY birthday ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS second_oldest
FROM FamilyMembers;Details
Mit dem Standardrahmen bekommen die ersten n − 1 Zeilen einer Partition NULL: Die n-te Zeile liegt noch nicht in ihrem Rahmen. Damit alle Zeilen denselben Wert bekommen, setzt du den Rahmen auf die ganze Partition: ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING.