メインコンテンツまでスキップ
バージョン: 4.x

ARRAY_COUNT

デスクリプション

lambda式を入力パラメータとして使用し、他の入力ARRAY パラメータの内部データに対して対応する式計算を実行します。 lambda(array1[i], ...) の戻り値が0でない要素の数を返します。この条件を満たす要素が見つからない場合は0を返します。

lambda式には1つまたは複数のパラメータが入力され、後続の入力配列列数と一致している必要があります。すべての入力配列の要素数は同じである必要があります。lambda内では正当なスカラー関数を実行できますが、集約関数などはサポートされていません。

Syntax

ARRAY_COUNT(<arr>),
ARRAY_COUNT(<lambda>, <arr>[, ... ])

パラメータ

Parameterデスクリプション
<lambda>入力パラメータが指定された配列の列数と一致する必要があるラムダ式。この式は有効なスカラー関数を実行できますが、集約関数はサポートしていません。
<arr>ARRAY配列

Return Value

ラムダ式を適用した後、ARRAY内の非ゼロ要素の数を返します。該当する要素が見つからない場合は、0を返します。

Example

select array_count(x -> x, [0, 1, 2, 3]);
+--------------------------------------------------------+
| array_count(array_map([x] -> x(0), ARRAY(0, 1, 2, 3))) |
+--------------------------------------------------------+
| 3 |
+--------------------------------------------------------+
select array_count(x -> x > 2, [0, 1, 2, 3]);
+------------------------------------------------------------+
| array_count(array_map([x] -> x(0) > 2, ARRAY(0, 1, 2, 3))) |
+------------------------------------------------------------+
| 1 |
+------------------------------------------------------------+
select array_count(x -> x is null, [null, null, null, 1, 2]);
+----------------------------------------------------------------------------+
| array_count(array_map([x] -> x(0) IS NULL, ARRAY(NULL, NULL, NULL, 1, 2))) |
+----------------------------------------------------------------------------+
| 3 |
+----------------------------------------------------------------------------+
select array_count(x -> power(x,2)>10, [1, 2, 3, 4, 5]);
+------------------------------------------------------------------------------+
| array_count(array_map([x] -> power(x(0), 2.0) > 10.0, ARRAY(1, 2, 3, 4, 5))) |
+------------------------------------------------------------------------------+
| 2 |
+------------------------------------------------------------------------------+
select *, array_count((x, y) -> x>y, c_array1, c_array2) from array_test;
+------+-----------------+-------------------------+-----------------------------------------------------------------------+
| id | c_array1 | c_array2 | array_count(array_map([x, y] -> x(0) > y(1), `c_array1`, `c_array2`)) |
+------+-----------------+-------------------------+-----------------------------------------------------------------------+
| 1 | [1, 2, 3, 4, 5] | [10, 20, -40, 80, -100] | 2 |
| 2 | [6, 7, 8] | [10, 12, 13] | 0 |
| 3 | [1] | [-100] | 1 |
| 4 | [1, NULL, 2] | [NULL, 3, 1] | 1 |
| 5 | [] | [] | 0 |
| 6 | NULL | NULL | 0 |
+------+-----------------+-------------------------+-----------------------------------------------------------------------+