カテゴリ:

集計関数 (ビット単位)、 ウィンドウ関数 (一般)、 ビット単位の式関数

BITAND_AGG

グループ内のすべての非NULL 数値レコードのビット単位の AND 値を返します。

ビット位置ごとに、すべての行のビットが1に設定されている場合、結果のビットは1に設定されます。行のビットがゼロに設定されている場合、結果はゼロになります。

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

エイリアス:

BITANDAGG , BIT_AND_AGG , BIT_ANDAGG

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

BITOR_AGG , BITXOR_AGG ,

BITAND

構文

集計関数

BITAND_AGG( <expr1> )

ウィンドウ関数

BITAND_AGG( <expr1> ) OVER ( [ PARTITION BY <expr2> ] )

引数

式1

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

式2

この式は、パーティション内の行をグループ化するために使用されます。

戻り値

返される値のデータ型は NUMERIC(38、0)です。

使用上の注意

  • 数値は最も近い整数データ型に集約されます。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;
+-------+---------+------+------+
| K_COL |   D_COL | S1   | S2   |
|-------+---------+------+------|
|    15 | 1.10000 | 12   | one  |
|    26 | 2.90000 | 10   | two  |
|    12 | 7.10000 | 7.9  | two  |
|    14 |    NULL | NULL | null |
|     8 |    NULL | NULL | null |
|  NULL | 9.10000 | 14   | nine |
+-------+---------+------+------+

データをクエリします。

select bitand_agg(k), bitand_agg(d), bitand_agg(s1) from bitwise_example;
+---------------+---------------+----------------+
| BITAND_AGG(K) | BITAND_AGG(D) | BITAND_AGG(S1) |
|---------------+---------------+----------------|
|             8 |             1 |              8 |
+---------------+---------------+----------------+

データをクエリし、 GROUP BY を使用します。

select s2, bitand_agg(k), bitand_agg(d) from bitwise_example group by s2;
+------+---------------+---------------+
| S2   | BITAND_AGG(K) | BITAND_AGG(D) |
|------+---------------+---------------|
| one  |            15 |             1 |
| two  |             8 |             3 |
| null |             8 |          NULL |
| nine |          NULL |             9 |
+------+---------------+---------------+

数値に変換できないこの関数の文字列を渡すと、エラーが発生します。

select bitand_agg(s2) from bitwise_example;
100038 (22018): Numeric value 'one' is not recognized