- 类别:
/sql-reference/functions-aggregation`(按位)、:doc:/sql-reference/functions-window`(常规)、按位表达式函数
BITOR_AGG¶
返回组中所有非 NULL 数字记录按位进行 OR 运算的值。
对于每个位位置,如果至少有一行的位设置为 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 数据类型。小数和浮点值在聚合之前四舍五入到最接近的整数。
聚合字符/文本列(数据类型 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