Выбирает последнее встреченное значение, аналогично anyLast, но допускает значение NULL.
Чаще всего используется с оконными функциями.
Без оконных функций результат будет случайным, если исходный поток не упорядочен.
Примеры
CREATE TABLE test_data
(
a Int64,
b Nullable(Int64)
)
ENGINE = Memory;
INSERT INTO test_data (a, b) VALUES (1,null), (2,3), (4, 5), (6,null)
Пример 1
По умолчанию значение NULL игнорируется.
SELECT last_value(b) FROM test_data
┌─last_value_ignore_nulls(b)─┐
│ 5 │
└────────────────────────────┘
Пример 2
Значение NULL игнорируется.
SELECT last_value(b) ignore nulls FROM test_data
┌─last_value_ignore_nulls(b)─┐
│ 5 │
└────────────────────────────┘
Пример 3
Допускается значение NULL.
SELECT last_value(b) respect nulls FROM test_data
┌─last_value_respect_nulls(b)─┐
│ ᴺᵁᴸᴸ │
└─────────────────────────────┘
Пример 4
Стабильный результат при использовании подзапроса с ORDER BY.
SELECT
last_value_respect_nulls(b),
last_value(b)
FROM
(
SELECT *
FROM test_data
ORDER BY a ASC
)
┌─last_value_respect_nulls(b)─┬─last_value(b)─┐
│ ᴺᵁᴸᴸ │ 5 │
└─────────────────────────────┴───────────────┘