BOOLXOR_AGG¶
グループの正確に1つの記録が TRUE と評価される場合にのみ TRUE を返します。
グループのすべての記録が NULL の場合、またはグループが空の場合、関数は NULL を返します。
- こちらもご参照ください。
構文¶
集計関数
BOOLXOR_AGG( <expr> )
ウィンドウ関数
BOOLXOR_AGG( <expr> ) OVER ( [ PARTITION BY <partition_expr> ] )
引数¶
expr
入力式は、ブール値に評価されるか、ブール値に変換できる式でなければなりません。
partition_expr
この列または式は、入力をパーティション(サブウィンドウ)に分割する方法を指定します。
戻り値¶
戻り値のデータ型はBOOLEANです。
使用上の注意¶
数値がゼロ以外の場合、数値は
TRUE
に変換されます。文字/テキストタイプはブール値に変換できないため、サポートされていません。
ウィンドウ関数として使用する場合:
この関数は次をサポートしていません。
OVER 句のORDER BY サブ句。
ウィンドウフレーム。
例¶
次の例は、boolxor_aggが正確に1つの入力値がtrueのときにtrueを返すことを示しています。
テーブルを作成してロードします。
create or replace table test_boolean_agg( id integer, c1 boolean, c2 boolean, c3 boolean, c4 boolean ); insert into test_boolean_agg (id, c1, c2, c3, c4) values (1, true, true, true, false), (2, true, false, false, false), (3, true, true, false, false), (4, true, false, false, false);データを表示します。
select * from test_boolean_agg; +----+------+-------+-------+-------+ | ID | C1 | C2 | C3 | C4 | |----+------+-------+-------+-------| | 1 | True | True | True | False | | 2 | True | False | False | False | | 3 | True | True | False | False | | 4 | True | False | False | False | +----+------+-------+-------+-------+データをクエリします。
select boolxor_agg(c1), boolxor_agg(c2), boolxor_agg(c3), boolxor_agg(c4) from test_boolean_agg; +-----------------+-----------------+-----------------+-----------------+ | BOOLXOR_AGG(C1) | BOOLXOR_AGG(C2) | BOOLXOR_AGG(C3) | BOOLXOR_AGG(C4) | |-----------------+-----------------+-----------------+-----------------| | False | False | True | False | +-----------------+-----------------+-----------------+-----------------+
ウィンドウ関数
この例は前の例と似ていますが、入力関数が2つのパーティションに分割されたウィンドウ関数としての使用法を示しています(0よりも大きいIDs が1つと、0以下の IDs が1つ)。テーブルに追加データが追加されました。
テーブルに行を追加します。
insert into test_boolean_agg (id, c1, c2, c3, c4) values (-4, false, false, false, true), (-3, false, true, true, true), (-2, false, false, true, true), (-1, false, true, true, true);データを表示します。
select * from test_boolean_agg order by id; +----+-------+-------+-------+-------+ | ID | C1 | C2 | C3 | C4 | |----+-------+-------+-------+-------| | -4 | False | False | False | True | | -3 | False | True | True | True | | -2 | False | False | True | True | | -1 | False | True | True | True | | 1 | True | True | True | False | | 2 | True | False | False | False | | 3 | True | True | False | False | | 4 | True | False | False | False | +----+-------+-------+-------+-------+データをクエリします。
select id, boolxor_agg(c1) OVER (PARTITION BY (id > 0)), boolxor_agg(c2) OVER (PARTITION BY (id > 0)), boolxor_agg(c3) OVER (PARTITION BY (id > 0)), boolxor_agg(c4) OVER (PARTITION BY (id > 0)) from test_boolean_agg order by id; +----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+ | ID | BOOLXOR_AGG(C1) OVER (PARTITION BY (ID > 0)) | BOOLXOR_AGG(C2) OVER (PARTITION BY (ID > 0)) | BOOLXOR_AGG(C3) OVER (PARTITION BY (ID > 0)) | BOOLXOR_AGG(C4) OVER (PARTITION BY (ID > 0)) | |----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------| | -4 | False | False | False | False | | -3 | False | False | False | False | | -2 | False | False | False | False | | -1 | False | False | False | False | | 1 | False | False | True | False | | 2 | False | False | True | False | | 3 | False | False | True | False | | 4 | False | False | True | False | +----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+
エラーの例
この関数にブール値に変換できない文字列が渡されると、関数はエラーを返します。
select boolxor_agg('invalid type');
100037 (22018): Boolean value 'invalid_type' is not recognized