last_value

last_value

마지막으로 마주친 값을 선택하는 집계 함수예요. anyLast와 비슷하지만 NULL을 받을 수 있어요. 주로 윈도우 함수(Window Functions)와 함께 사용해요.

출처: 문서

본문

마지막으로 마주친 값을 선택하는 집계 함수예요. anyLast와 비슷하지만 NULL을 받을 수 있어요. 주로 윈도우 함수(Window Functions)와 함께 사용해야 해요. 윈도우 함수 없이 소스 스트림이 정렬되지 않으면 결과가 무작위가 될 수 있어요.

예시 (Examples)

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 │
└─────────────────────────────┴───────────────┘

더 알아보기 (Learn more)