Função BIT_AND - Amazon Redshift

Função BIT_AND

A função BIT_AND executa operações AND bit-wise em todos os valores em uma única coluna ou expressão de inteiros. Essa função agrega cada bit de cada valor binário que corresponde a cada valor inteiro na expressão.

A função BIT_AND retorna um resultado de 0 se nenhum dos bits estiver definido como 1 ao longo de todos os valores. Se um ou mais bits estiver definido como 1 ao longo de todos os valores, a função retorna um valor inteiro. Este inteiro é o número que corresponde ao valor binário para os bits.

Por exemplo, uma tabela contém quatro valores inteiros em uma coluna: 3, 7, 10 e 22. Esses números inteiros são representados na forma binária da seguinte forma:

Inteiro Valor binário
3 11
7 111
10 1010
22 10110

Uma operação de BIT_AND neste conjunto de dados identifica que todos os bits estão definidos como 1 somente na penúltima posição. O resultado é um valor binário de 00000010, que representa o valor inteiro 2. Portanto, a função BIT_AND retorna 2.

Sintaxe

BIT_AND ( [DISTINCT | ALL] expression )

Argumentos

expressão

A coluna ou expressão de destino na qual a função opera. Essa expressão deve ter um tipo de dados INT, INT2 ou INT8. A função retorna um tipo de dados INT, INT2 ou INT8 equivalente.

DISTINCT | ALL

Com o argumento DISTINCT, a função elimina todos os valores duplicados para a expressão especificada antes de calcular o resultado. Com o argumento ALL, a função retém todos os valores duplicados. ALL é o padrão. Para obter mais informações, consulte Compatibilidade DISTINCT para agregações bit-wise.

Exemplos

Considerando que informações comerciais significativas são armazenadas em colunas de inteiros, você pode usar funções bit-wise para extrair e agregar essas informações. A seguinte consulta aplica a função BIT_AND na coluna de LIKES em uma tabela chamada USERLIKES e agrupa os resultados pela coluna CITY.

select city, bit_and(likes) from userlikes group by city order by city; city | bit_and --------------+--------- Los Angeles | 0 Sacramento | 0 San Francisco | 0 San Jose | 64 Santa Barbara | 192 (5 rows)

Esses resultados podem ser interpretados da seguinte forma:

  • O valor inteiro 192 para Santa Bárbara é traduzido para o valor binário 11000000. Em outras palavras, todos os usuários nesta cidade gostam de esportes e de teatro, mas nem todos os usuários gostam de qualquer outro tipo de evento.

  • O inteiro 64 o traduz para 01000000. Portanto, para os usuários de San José, o único tipo de evento de que todos gostam é o teatro.

  • Os valores de 0 para as outras três cidades indicam que nenhum “gosto” é compartilhado por todos os usuários nessas cidades.