NTH_VALUE
Возвращает значение column из n-й строки рамки окна.
PostgreSQL 17.9
NTH_VALUE(column, n)- column
- Столбец или выражение, значение которого нужно вернуть
- n
- Номер строки в рамке, начиная с 1integer
Возвращаемое значение
Значение того же типа, что и column; NULL, если в рамке меньше n строк
Примеры
Второй по старшинству — рамка по умолчанию
PostgreSQL 17.9
SELECT member_name,
birthday,
NTH_VALUE(member_name, 2) OVER (
ORDER BY birthday
) AS second_oldest
FROM FamilyMembers;Второй по старшинству во всём разделе
PostgreSQL 17.9
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;Подробности
Рамка по умолчанию идёт от начала раздела до текущей строки и строк с тем же значением ORDER BY, а без ORDER BY — весь раздел. Поэтому с рамкой по умолчанию первые n − 1 строк раздела получают NULL: n-я строка ещё не попала в их рамку. Чтобы у всех строк было одно значение, задайте рамку на весь раздел — ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING.