- 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 ,
Sintaxe¶
Função de agregação
BITAND_AGG( <expr1> )
Função de janela
BITAND_AGG( <expr1> ) OVER ( [ PARTITION BY <expr2> ] )
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');
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 |
+-------+---------+------+------+
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 |
+---------------+---------------+----------------+
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;
+------+---------------+---------------+
| 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;
100038 (22018): Numeric value 'one' is not recognized