Categorias:

Funções de agregação (Bit a bit) , Funções de janela (Geral) , Funções de expressões bit a bit

BITAND_AGG

Retorna o valor AND bit a bit de todos os registros numéricos diferentes de NULL em um grupo.

Para cada posição de bit, se todas as linhas tiverem o bit definido como 1, então o bit será definido como 1 no resultado. Se qualquer linha tiver esse bit ajustado como zero, o resultado será zero.

Se todos os registros dentro do grupo forem NULL, ou se o grupo estiver vazio, a função retorna NULL.

Aliases:

BITANDAGG , BIT_AND_AGG , BIT_ANDAGG

Consulte também:

BITOR_AGG , BITXOR_AGG ,

BITAND

Sintaxe

Função de agregação

BITAND_AGG( <expr1> )
Copy

Função de janela

BITAND_AGG( <expr1> ) OVER ( [ PARTITION BY <expr2> ] )

Argumentos

expr1

A expressão de entrada deve ser uma expressão que pode ser avaliada como um número ou convertida em um número.

expr2

Esta expressão é usada para agrupar as linhas em partições.

Retornos

O tipo de dados do valor retornado é NUMERIC(38, 0).

Notas de uso

  • Os valores numéricos são agregados ao tipo de dados inteiro mais próximo. Os valores decimais e de ponto flutuante são arredondados para o número inteiro mais próximo antes da agregação.

  • Agregando uma coluna de caracteres/texto (tipo de dados VARCHAR, CHAR, STRING etc.), implicitamente converte os valores de entrada em FLOAT, depois arredonda os valores para o número inteiro mais próximo. Se a conversão não for possível, o valor é tratado como NULL.

  • A palavra-chave DISTINCT pode ser especificada para estas funções, mas não tem qualquer efeito.

  • Quando usado como uma função de janela:

    • Esta função não oferece suporte para:

      • Subcláusula ORDER BY na cláusula OVER().

      • Quadros de janela.

Exemplos

Criar a tabela e carregar os dados:

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');
Copy

Exibir os dados:

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 |
+-------+---------+------+------+
Copy

Consultar os dados:

select bitand_agg(k), bitand_agg(d), bitand_agg(s1) from bitwise_example;
+---------------+---------------+----------------+
| BITAND_AGG(K) | BITAND_AGG(D) | BITAND_AGG(S1) |
|---------------+---------------+----------------|
|             8 |             1 |              8 |
+---------------+---------------+----------------+
Copy

Consultar os dados e utilizar um GROUP BY:

select s2, bitand_agg(k), bitand_agg(d) from bitwise_example group by s2
    order by 3;
+------+---------------+---------------+
| S2   | BITAND_AGG(K) | BITAND_AGG(D) |
|------+---------------+---------------|
| one  |            15 |             1 |
| two  |             8 |             3 |
| nine |          NULL |             9 |
| null |             8 |          NULL |
+------+---------------+---------------+
Copy

Se você passar cadeias de caracteres que não podem ser convertidas em números por essa função, um erro será gerado:

select bitand_agg(s2) from bitwise_example;
Copy
100038 (22018): Numeric value 'one' is not recognized
Copy