Función BIT_OR - Amazon Redshift

Función BIT_OR

La función BIT_OR ejecuta operaciones OR bit a bit en todos los valores de una única columna o expresión con valores enteros. Estas funciones agregan cada bit de cada valor binario que corresponde a cada valor entero en la expresión.

Por ejemplo, suponga que su tabla tiene cuatro valores enteros en una columna: 3, 7, 10 y 22. Esos valores enteros están representados en formato binario de la siguiente manera.

Entero Valor binario
3 11
7 111
10 1010
22 10110

‎Si aplica la función BIT_OR al conjunto de valores enteros, la operación busca cualquier valor donde se haya encontrado un ‎1 en cada posición. En este caso, existe un valor de 1 en las últimas cinco posiciones para al menos uno de los valores, lo que da como resultado un valor binario de 00011111; por lo tanto, la función devuelve 31 (o 16 + 8 + 4 + 2 + 1).

Sintaxis

BIT_OR ( [DISTINCT | ALL] expression )

Argumentos

expression

La columna o expresión de destino sobre la que opera la función. Esta expresión debe tener un tipo de datos INT, INT2 o INT8. La función devuelve un tipo de datos INT, INT2 o INT8 equivalente.

DISTINCT | ALL

Con el argumento DISTINCT, la función elimina todos los valores duplicados para la expresión especificada antes de calcular el resultado. Con el argumento ALL, la función retiene todos los valores duplicados. El valor predeterminado es ALL. Para obtener más información, consulte DISTINCT compatible con agregaciones bit a bit.

Ejemplo

La siguiente consulta aplica la función BIT_OR a la columna LIKES en una tabla que se llama USERLIKES y agrupa los resultados según la columna CITY.

select city, bit_or(likes) from userlikes group by city order by city; city | bit_or --------------+-------- Los Angeles | 127 Sacramento | 255 San Francisco | 255 San Jose | 255 Santa Barbara | 255 (5 rows)

Para cuatro de las ciudades indicadas, todos los tipos de eventos tienen el gusto de, al menos, un usuario (255=11111111). Para Los Angeles, todos los tipos de eventos, excepto deportes, tienen el gusto de al menos un usuario (127=01111111).