Skip to main content
Edit this page

first_value

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

ウィンドウ関数および通常の集計の両方でNULLを尊重する修飾子(RESPECT NULLS)を宣言することをサポートしています。

anyと同様に、ウィンドウ関数なしではソースストリームが注文されていない場合、結果はランダムになり、戻りの型は入力の型と一致します(入力がNullableまたは-OrNullコンビネータが追加されている場合のみ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 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 │
└──────────────────────┴────────┘