メインコンテンツへスキップ
メインコンテンツへスキップ

first_value

これはany のエイリアスですが、Window Functions との互換性のために導入されたものです。Window Functions では NULL 値を処理する必要が生じることがあります(デフォルトでは、すべての ClickHouse 集約関数は NULL 値を無視します)。

この関数は、NULL を考慮する修飾子(RESPECT NULLS)の指定をサポートしており、Window Functions および通常の集約処理の両方で使用できます。

any と同様に、Window Functions を使用しない場合、ソースストリームがソートされていなければ結果は不定となり、戻り値の型は入力の型と一致します(NULL が返されるのは、入力が Nullable 型である場合、または -OrNull コンビネータが追加されている場合のみです)。

使用例

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 first_value(b) FROM test_data;
┌─any(b)─┐
│      3 │
└────────┘

例 2

NULL 値は無視されます。

SELECT first_value(b) ignore nulls FROM test_data
┌─any(b) IGNORE NULLS ─┐
│                    3 │
└──────────────────────┘

例 3

NULL 値が許容されます。

SELECT first_value(b) respect nulls FROM test_data
┌─any(b) RESPECT NULLS ─┐
│                  ᴺᵁᴸᴸ │
└───────────────────────┘

例 4

ORDER BY を含むサブクエリを使用して結果を安定させた例。

SELECT
    first_value_respect_nulls(b),
    first_value(b)
FROM
(
    SELECT *
    FROM test_data
    ORDER BY a ASC
)
┌─any_respect_nulls(b)─┬─any(b)─┐
│                 ᴺᵁᴸᴸ │      3 │
└──────────────────────┴────────┘