BITOR_AGG¶
グループ内のすべての非NULL 数値レコードのビット単位の OR 値を返します。
ビット位置ごとに、少なくとも1つの行のビットが1に設定されている場合、結果のビットは1に設定されます。すべての行のビットがゼロに設定されている場合、結果はゼロになります。
グループ内のすべてのレコード がNULLの場合、またはグループが空の場合、関数は NULLを返します。
- エイリアス:
- BITORAGG, BIT_OR_AGG, BIT_ORAGG 
- こちらもご参照ください。
構文¶
集計関数
BITOR_AGG( <expr1> )
ウィンドウ関数
BITOR_AGG( <expr1> ) OVER ( [ PARTITION BY <expr2> ] )
引数¶
- expr1
- この式は、 数値 または数値にキャストできるデータ型の値に評価される必要があります。 
- expr2
- この式は、パーティション内の行をグループ化するために使用されます。 
戻り値¶
戻り値のデータ型は NUMBER(38, 0) です。
使用上の注意¶
- 数値は最も近い INTEGER データ型に集約されます。10進値と浮動小数点値は、集約の前に最も近い整数に四捨五入されます。 
- 文字/テキスト列(データ型 VARCHAR、 CHAR、 STRINGなど)を集約すると、入力値が暗黙的に FLOATにキャストされ、値が最も近い整数に四捨五入されます。キャストできない場合、値は NULLとして扱われます。 
- これらの関数には DISTINCT キーワードを指定できますが、効果はありません。 
- この関数がウィンドウ関数として呼び出される場合、以下はサポートされていません。 - OVER 句内の ORDER BY 句。 
- 明示的なウィンドウフレーム。 
 
例¶
テーブルを作成し、データをロードします。
CREATE OR REPLACE TABLE bitwise_example
  (k INT, d DECIMAL(10,5), s1 VARCHAR(10), s2 VARCHAR(10));
INSERT INTO bitwise_example VALUES
  (15, 1.1, '12','one'),
  (26, 2.9, '10','two'),
  (12, 7.1, '7.9','two'),
  (14, NULL, NULL,'null'),
  (8, NULL, NULL, 'null'),
  (NULL, 9.1, '14','nine');
データを表示します。
SELECT k AS k_col, d AS d_col, s1, s2
  FROM bitwise_example
  ORDER BY k_col;
+-------+---------+------+------+
| K_COL |   D_COL | S1   | S2   |
|-------+---------+------+------|
|     8 |    NULL | NULL | null |
|    12 | 7.10000 | 7.9  | two  |
|    14 |    NULL | NULL | null |
|    15 | 1.10000 | 12   | one  |
|    26 | 2.90000 | 10   | two  |
|  NULL | 9.10000 | 14   | nine |
+-------+---------+------+------+
データをクエリします。
SELECT BITOR_AGG(k), 
       BITOR_AGG(d), 
       BITOR_AGG(s1) 
  FROM bitwise_example;
+--------------+--------------+---------------+
| BITOR_AGG(K) | BITOR_AGG(D) | BITOR_AGG(S1) |
|--------------+--------------+---------------|
|           31 |           15 |            14 |
+--------------+--------------+---------------+
データをクエリし、 GROUP BY 句を使用します。
SELECT s2, 
       BITOR_AGG(k), 
       BITOR_AGG(d) 
  FROM bitwise_example group by s2
  ORDER BY 3;
+------+--------------+--------------+
| S2   | BITOR_AGG(K) | BITOR_AGG(D) |
|------+--------------+--------------|
| one  |           15 |            1 |
| two  |           30 |            7 |
| nine |         NULL |            9 |
| null |           14 |         NULL |
+------+--------------+--------------+
NUMBER 値に変換できないこの関数の文字列を渡すと、エラーが発生します。
SELECT BITOR_AGG(s2) FROM bitwise_example;
100038 (22018): Numeric value 'one' is not recognized