Categorias:

Funções de agregação (Bitwise) , Funções de janela (General) , 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> ] )
Copy

Argumentos

expr1

Esta expressão deve ser avaliada como um valor numérico ou um valor de um tipo de dados que pode ser convertido em um valor numérico.

expr2

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

Retornos

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

Notas de uso

  • Os valores numéricos são agregados ao tipo de dados INTEGER mais próximo. Valores decimais e de ponto flutuante são arredondados para o 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 esta função é chamada como uma função de janela, ela não oferece suporte para:

    • Uma cláusula ORDER BY dentro da cláusula OVER.

    • Quadros de janela explícitos.

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

Consultar os dados:

SELECT BITAND_AGG(k), 
       BITAND_AGG(d), 
       BITAND_AGG(s1) 
  FROM bitwise_example;
Copy
+---------------+---------------+----------------+
| BITAND_AGG(K) | BITAND_AGG(D) | BITAND_AGG(S1) |
|---------------+---------------+----------------|
|             8 |             1 |              8 |
+---------------+---------------+----------------+

Consulte os dados e use uma cláusula GROUP BY:

SELECT s2, 
       BITAND_AGG(k), 
       BITAND_AGG(d) 
  FROM bitwise_example 
  GROUP BY s2
  ORDER BY 3;
Copy
+------+---------------+---------------+
| S2   | BITAND_AGG(K) | BITAND_AGG(D) |
|------+---------------+---------------|
| one  |            15 |             1 |
| two  |             8 |             3 |
| nine |          NULL |             9 |
| null |             8 |          NULL |
+------+---------------+---------------+

Se você passar para esta função cadeias de caracteres que não podem ser convertidas em valores NUMBER, um erro será retornado:

SELECT BITAND_AGG(s2) FROM bitwise_example;
Copy
100038 (22018): Numeric value 'one' is not recognized