BITXOR_AGG¶
グループ内のすべての非NULL 数値レコードのビット単位の XOR 値を返します。
各ビット位置で、偶数行のビットが1に設定されている場合、関数はそのビットに対して0を返し、奇数行のビットが1に設定されている場合、関数そのビットに対して1を返します。
グループ内のすべてのレコードが NULLの場合、またはグループが空の場合、関数は NULLを返します。
- エイリアス:
BITXORAGG , BIT_XOR_AGG, BIT_XORAGG
- こちらもご参照ください。
構文¶
集計関数
BITXOR_AGG( [ DISTINCT ] <expr1> )
ウィンドウ関数
BITXOR_AGG( [ DISTINCT ] <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 BITXOR_AGG(k),
BITXOR_AGG(d),
BITXOR_AGG(s1)
FROM bitwise_example;
+---------------+---------------+----------------+
| BITXOR_AGG(K) | BITXOR_AGG(D) | BITXOR_AGG(S1) |
|---------------+---------------+----------------|
| 31 | 12 | 0 |
+---------------+---------------+----------------+
データをクエリし、 GROUP BY 句を使用します。
SELECT s2,
BITXOR_AGG(k),
BITXOR_AGG(d)
FROM bitwise_example
GROUP BY s2
ORDER BY 3;
+------+---------------+---------------+
| S2 | BITXOR_AGG(K) | BITXOR_AGG(D) |
|------+---------------+---------------|
| one | 15 | 1 |
| two | 22 | 4 |
| nine | NULL | 9 |
| null | 6 | NULL |
+------+---------------+---------------+
NUMBER 値に変換できないこの関数の文字列を渡すと、エラーが発生します。
SELECT BITXOR_AGG(s2) FROM bitwise_example;
100038 (22018): Numeric value 'one' is not recognized