カテゴリ:

集計関数 (Boolean) , ウィンドウ関数 , 条件式関数

BOOLOR_AGG

グループ内の少なくとも1つのブール記録が TRUE と評価される場合に TRUE を返します。

グループのすべての記録が NULL の場合、またはグループが空の場合、関数は NULL を返します。

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

BOOLORBOOLAND_AGGBOOLXOR_AGG

構文

集計関数

BOOLOR_AGG( <expr> )

ウィンドウ関数

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

引数

expr

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

partition_expr

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

戻り値

戻り値のデータ型はBOOLEANです。

使用上の注意

  • の値がゼロ以外の場合、数値は TRUE に変換されます。

  • 文字列およびバイナリ 値はブール値に変換できないため、サポートされていません。

  • この関数がウィンドウ関数として呼び出される場合、以下はサポートされていません。

    • OVER 句内の ORDER BY 句。

    • 明示的なウィンドウフレーム。

集計関数

次の例は、少なくとも1つの入力値がtrueの場合、boolor_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 BOOLOR_AGG(c1), BOOLOR_AGG(c2), BOOLOR_AGG(c3), BOOLOR_AGG(c4)
  FROM test_boolean_agg;
+----------------+----------------+----------------+----------------+
| BOOLOR_AGG(C1) | BOOLOR_AGG(C2) | BOOLOR_AGG(C3) | BOOLOR_AGG(C4) |
|----------------+----------------+----------------+----------------|
| True           | True           | 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,
    BOOLOR_AGG(c1) OVER (PARTITION BY (id > 0)),
    BOOLOR_AGG(c2) OVER (PARTITION BY (id > 0)),
    BOOLOR_AGG(c3) OVER (PARTITION BY (id > 0)),
    BOOLOR_AGG(c4) OVER (PARTITION BY (id > 0))
  FROM test_boolean_agg
  ORDER BY id;
+----+---------------------------------------------+---------------------------------------------+---------------------------------------------+---------------------------------------------+
| ID | BOOLOR_AGG(C1) OVER (PARTITION BY (ID > 0)) | BOOLOR_AGG(C2) OVER (PARTITION BY (ID > 0)) | BOOLOR_AGG(C3) OVER (PARTITION BY (ID > 0)) | BOOLOR_AGG(C4) OVER (PARTITION BY (ID > 0)) |
|----+---------------------------------------------+---------------------------------------------+---------------------------------------------+---------------------------------------------|
| -4 | False                                       | True                                        | True                                        | True                                        |
| -3 | False                                       | True                                        | True                                        | True                                        |
| -2 | False                                       | True                                        | True                                        | True                                        |
| -1 | False                                       | True                                        | True                                        | True                                        |
|  1 | True                                        | True                                        | True                                        | False                                       |
|  2 | True                                        | True                                        | True                                        | False                                       |
|  3 | True                                        | True                                        | True                                        | False                                       |
|  4 | True                                        | True                                        | True                                        | False                                       |
+----+---------------------------------------------+---------------------------------------------+---------------------------------------------+---------------------------------------------+

エラーの例

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

select boolor_agg('invalid type');

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