最後に現れた値を選択します。anyLast に似ていますが、NULL も受け取れます。
主に Window Functions と組み合わせて使用します。
Window Functions を使用しない場合、ソースストリームに順序がなければ、結果はランダムになります。
例
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 │
└─────────────────────────────┴───────────────┘