Categorias:

Funções de agregação (Booleano) , Funções de janela , Funções de expressão condicional

BOOLOR_AGG

Retornará TRUE se pelo menos um registro booleano em um 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:

BOOLOR , BOOLAND_AGG , BOOLXOR_AGG

Sintaxe

Função de agregação

BOOLOR_AGG( <expr> )
Copy

Função de janela

BOOLOR_AGG( <expr> ) OVER ( [ PARTITION BY <partition_expr> ] )
Copy

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, decimais e de ponto flutuante são convertidos em ‘true’ se forem diferentes de 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

Função de agregação

O exemplo a seguir mostra que boolor_agg retorna verdadeiro se pelo menos um dos valores de entrada for 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);
Copy

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

Consultar os dados:

select boolor_agg(c1), boolor_agg(c2), boolor_agg(c3), boolor_agg(c4)
    from test_boolean_agg;
+----------------+----------------+----------------+----------------+
| BOOLOR_AGG(C1) | BOOLOR_AGG(C2) | BOOLOR_AGG(C3) | BOOLOR_AGG(C4) |
|----------------+----------------+----------------+----------------|
| True           | True           | True           | False          |
+----------------+----------------+----------------+----------------+
Copy

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

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

Consultar os dados:

select 
      id,
      boolor_agg(c1) OVER (PARTITION BY (id > 0)),
      boolor_agg(c2) OVER (PARTITION BY (id > 0)),
      boolor_agg(c3) OVER (PARTITION BY (id > 0)),
      boolor_agg(c4) OVER (PARTITION BY (id > 0))
    from test_boolean_agg
    order by id;
+----+---------------------------------------------+---------------------------------------------+---------------------------------------------+---------------------------------------------+
| ID | BOOLOR_AGG(C1) OVER (PARTITION BY (ID > 0)) | BOOLOR_AGG(C2) OVER (PARTITION BY (ID > 0)) | BOOLOR_AGG(C3) OVER (PARTITION BY (ID > 0)) | BOOLOR_AGG(C4) OVER (PARTITION BY (ID > 0)) |
|----+---------------------------------------------+---------------------------------------------+---------------------------------------------+---------------------------------------------|
| -4 | False                                       | True                                        | True                                        | True                                        |
| -3 | False                                       | True                                        | True                                        | True                                        |
| -2 | False                                       | True                                        | True                                        | True                                        |
| -1 | False                                       | True                                        | True                                        | True                                        |
|  1 | True                                        | True                                        | True                                        | False                                       |
|  2 | True                                        | True                                        | True                                        | False                                       |
|  3 | True                                        | True                                        | True                                        | False                                       |
|  4 | True                                        | True                                        | True                                        | False                                       |
+----+---------------------------------------------+---------------------------------------------+---------------------------------------------+---------------------------------------------+
Copy

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 boolor_agg('invalid type');

100037 (22018): Boolean value 'invalid_type' is not recognized
Copy