Syntax
BIT_OR(expr) OVER (analytic_clause)
Purpose
Returns the bitwise OR of all bits in expr.
The result type depends on whether the function parameters are evaluated as binary strings or numbers. Binary string evaluation occurs when the parameter values are of the binary string type and are not hexadecimal literals, bit literals, or NULL literals. Otherwise, numeric computation occurs, and the parameter values are converted to unsigned 64-bit integers as needed.
If no rows match, BIT_OR() returns a neutral value with the same length as the parameter value (all bits set to 0). NULL values do not affect the result unless all values are NULL, in which case the result is a neutral value with the same length as the parameter value.
Examples
CREATE TABLE tbl1 (year YEAR (4), month INT(2)UNSIGNED ZEROFILL, day INT(2) UNSIGNED ZEROFILL);
INSERT INTO tbl1 VALUES(2021,1,1),(2021,1,22),(2021,1,3),(2021,2,2), (2021,2,23),(2021,2,23);
obclient> SELECT * FROM tbl1;
+------+-------+------+
| year | month | day |
+------+-------+------+
| 2021 | 01 | 01 |
| 2021 | 01 | 22 |
| 2021 | 01 | 03 |
| 2021 | 02 | 02 |
| 2021 | 02 | 23 |
| 2021 | 02 | 23 |
+------+-------+------+
6 rows in set
obclient> SELECT year,month,BIT_OR(day) OVER (PARTITION BY year, month) AS days FROM tbl1;
+------+-------+------+
| year | month | days |
+------+-------+------+
| 2021 | 01 | 23 |
| 2021 | 01 | 23 |
| 2021 | 01 | 23 |
| 2021 | 02 | 23 |
| 2021 | 02 | 23 |
| 2021 | 02 | 23 |
+------+-------+------+
6 rows in set
