- Categorias:
Funções de agregação (Booleano) , Funções de janela , Funções de expressão condicional
BOOLXOR_AGG¶
Retorna TRUE se exatamente um registro booleano no grupo for avaliado como TRUE.
Se todos os registros no grupo forem NULL, ou se o grupo estiver vazio, a função retornará NULL.
- Consulte também:
Sintaxe¶
Função de agregação
BOOLXOR_AGG( <expr> )
Função de janela
BOOLXOR_AGG( <expr> ) OVER ( [ PARTITION BY <partition_expr> ] )
Argumentos¶
expr
A expressão de entrada deve ser uma expressão que pode ser avaliada como um booleano ou convertida em um booleano.
partition_expr
Esta coluna ou expressão especifica como separar a entrada em partições (subjanelas).
Retornos¶
O tipo de dados do valor retornado é BOOLEAN.
Notas de uso¶
Valores numéricos são convertidos em
TRUE
se não forem zero.Os tipos de caracteres/texto não são suportados, pois não podem ser convertidos em booleanos.
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¶
O exemplo a seguir mostra que boolxor_agg retorna verdadeiro quando exatamente um dos valores de entrada é verdadeiro.
Criar e carregar a tabela:
create or replace table test_boolean_agg( id integer, c1 boolean, c2 boolean, c3 boolean, c4 boolean ); insert into test_boolean_agg (id, c1, c2, c3, c4) values (1, true, true, true, false), (2, true, false, false, false), (3, true, true, false, false), (4, true, false, false, false);Exibir os dados:
select * from test_boolean_agg; +----+------+-------+-------+-------+ | ID | C1 | C2 | C3 | C4 | |----+------+-------+-------+-------| | 1 | True | True | True | False | | 2 | True | False | False | False | | 3 | True | True | False | False | | 4 | True | False | False | False | +----+------+-------+-------+-------+Consultar os dados:
select boolxor_agg(c1), boolxor_agg(c2), boolxor_agg(c3), boolxor_agg(c4) from test_boolean_agg; +-----------------+-----------------+-----------------+-----------------+ | BOOLXOR_AGG(C1) | BOOLXOR_AGG(C2) | BOOLXOR_AGG(C3) | BOOLXOR_AGG(C4) | |-----------------+-----------------+-----------------+-----------------| | False | False | True | False | +-----------------+-----------------+-----------------+-----------------+
Função de janela
Este exemplo é similar ao exemplo anterior, mas mostra o uso como uma função de janela, com as linhas de entrada divididas em duas partições (uma para IDs maior que 0 e outra para IDs menor ou igual a 0). Dados adicionais foram adicionados à tabela.
Adicionar linhas à tabela:
insert into test_boolean_agg (id, c1, c2, c3, c4) values (-4, false, false, false, true), (-3, false, true, true, true), (-2, false, false, true, true), (-1, false, true, true, true);Exibir os dados:
select * from test_boolean_agg order by id; +----+-------+-------+-------+-------+ | ID | C1 | C2 | C3 | C4 | |----+-------+-------+-------+-------| | -4 | False | False | False | True | | -3 | False | True | True | True | | -2 | False | False | True | True | | -1 | False | True | True | True | | 1 | True | True | True | False | | 2 | True | False | False | False | | 3 | True | True | False | False | | 4 | True | False | False | False | +----+-------+-------+-------+-------+Consultar os dados:
select id, boolxor_agg(c1) OVER (PARTITION BY (id > 0)), boolxor_agg(c2) OVER (PARTITION BY (id > 0)), boolxor_agg(c3) OVER (PARTITION BY (id > 0)), boolxor_agg(c4) OVER (PARTITION BY (id > 0)) from test_boolean_agg order by id; +----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+ | ID | BOOLXOR_AGG(C1) OVER (PARTITION BY (ID > 0)) | BOOLXOR_AGG(C2) OVER (PARTITION BY (ID > 0)) | BOOLXOR_AGG(C3) OVER (PARTITION BY (ID > 0)) | BOOLXOR_AGG(C4) OVER (PARTITION BY (ID > 0)) | |----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------| | -4 | False | False | False | False | | -3 | False | False | False | False | | -2 | False | False | False | False | | -1 | False | False | False | False | | 1 | False | False | True | False | | 2 | False | False | True | False | | 3 | False | False | True | False | | 4 | False | False | True | False | +----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+
Exemplo de erro
Se esta função for passada por cadeias de caracteres que não podem ser convertidas em booleano, a função dará um erro:
select boolxor_agg('invalid type');
100037 (22018): Boolean value 'invalid_type' is not recognized