any のエイリアスですが、Window Functions との互換性のために導入されました。Window Functions では NULL 値を処理する必要がある場合があり (デフォルトでは ClickHouse のすべての集約関数は NULL 値を無視します) 。
Window Functions と通常の集計の両方で、NULL を考慮する修飾子 (RESPECT NULLS) を指定できます。
any と同様に、Window Functions を使用しない場合、入力ストリームが順序付けされていなければ結果はランダムになり、戻り値の型は入力型と一致します
(NULL が返されるのは、入力が Nullable であるか、-OrNull combinator が追加されている場合のみです) 。
例
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 │
└──────────────────────┴────────┘