カテゴリ:

集計関数 (ブール値)、 ウィンドウ関数条件式関数

BOOLAND_AGG

グループ内のすべての非 NULL ブール値レコードの論理(ブール値) AND 値を返します。

BOOLAND_AGG は、グループ内のすべてのレコードが TRUE と評価される場合にのみ TRUE を返します。

グループ内のすべてのレコードが NULLの場合、またはグループが空の場合、関数は NULLを返します。

こちらもご参照ください:

BOOLAND , BOOLOR_AGG , BOOLXOR_AGG

構文

集計関数

BOOLAND_AGG( <expr> )

ウィンドウ関数

BOOLAND_AGG( <expr> )  OVER ( [ PARTITION BY <partition_expr> ] )

引数

入力式は、ブール値に評価されるか、ブール値に変換できる式でなければなりません。

パーティション式

この列または式は、入力をパーティション(サブウィンドウ)に分割する方法を指定します。

戻り値

返される値のデータ型は BOOLEAN です。

使用上の注意

  • 数値、10進数、および浮動小数点値がゼロと異なる場合は、 TRUE に変換されます。

  • 文字/テキストタイプはブール値に変換できないため、サポートされていません。

  • ウィンドウ関数として使用する場合:

    • この関数は次をサポートしていません。

      • OVER 句のORDER BY サブ句。

      • ウィンドウフレーム。

集計関数

次の例は、すべての入力値がtrueのときにbooland_aggが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 booland_agg(c1), booland_agg(c2), booland_agg(c3), booland_agg(c4)
    from test_boolean_agg;
+-----------------+-----------------+-----------------+-----------------+
| BOOLAND_AGG(C1) | BOOLAND_AGG(C2) | BOOLAND_AGG(C3) | BOOLAND_AGG(C4) |
|-----------------+-----------------+-----------------+-----------------|
| True            | False           | False           | 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,
      booland_agg(c1) OVER (PARTITION BY (id > 0)),
      booland_agg(c2) OVER (PARTITION BY (id > 0)),
      booland_agg(c3) OVER (PARTITION BY (id > 0)),
      booland_agg(c4) OVER (PARTITION BY (id > 0))
    from test_boolean_agg
    order by id;
+----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+
| ID | BOOLAND_AGG(C1) OVER (PARTITION BY (ID > 0)) | BOOLAND_AGG(C2) OVER (PARTITION BY (ID > 0)) | BOOLAND_AGG(C3) OVER (PARTITION BY (ID > 0)) | BOOLAND_AGG(C4) OVER (PARTITION BY (ID > 0)) |
|----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------|
| -4 | False                                        | False                                        | False                                        | True                                         |
| -3 | False                                        | False                                        | False                                        | True                                         |
| -2 | False                                        | False                                        | False                                        | True                                         |
| -1 | False                                        | False                                        | False                                        | True                                         |
|  1 | True                                         | False                                        | False                                        | False                                        |
|  2 | True                                         | False                                        | False                                        | False                                        |
|  3 | True                                         | False                                        | False                                        | False                                        |
|  4 | True                                         | False                                        | False                                        | False                                        |
+----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+

エラーの例

この関数にブール値に変換できない文字列が渡されると、関数はエラーを返します。

select booland_agg('invalid type');

100037 (22018): Boolean value 'invalid_type' is not recognized