Catégories :

Fonctions d’agrégation (Boolean) , Fonctions de fenêtre , Fonctions d’expressions conditionnelles

BOOLAND_AGG

Renvoie TRUE si tous les enregistrements booléens non NULL d’un groupe sont évalués à TRUE.

Si tous les enregistrements du groupe sont NULL ou si le groupe est vide, la fonction renvoie NULL.

Voir aussi :

BOOLAND , BOOLOR_AGG , BOOLXOR_AGG

Syntaxe

Fonction d’agrégation

BOOLAND_AGG( <expr> ) 
Copy

Fonction de fenêtre

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

Arguments

expr

L’expression d’entrée doit être une expression pouvant être évaluée en booléen ou convertie en booléen.

partition_expr

Cette colonne ou expression spécifie comment séparer l’entrée en partitions (sous-fenêtres).

Renvoie

Le type de données de la valeur renvoyée est BOOLEAN.

Notes sur l’utilisation

  • Les valeurs numériques, décimales et à virgule flottante sont converties en TRUE si elles sont différentes de zéro.

  • Les types caractères/textes ne sont pas pris en charge, car ils ne peuvent pas être convertis en booléens.

  • Lorsque cette fonction est appelée en tant que fonction de fenêtre, elle ne prend pas en charge :

    • Une clause ORDER BY dans la clause OVER.

    • Cadres de fenêtre explicites.

Exemples

Fonction d’agrégation

L’exemple suivant montre que booland_agg renvoie true lorsque toutes les valeurs d’entrée sont true.

Créer et charger la table :

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

Afficher les données :

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

Interroger les données :

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

Fonction de fenêtre

Cet exemple est similaire à l’exemple précédent, mais montre l’utilisation en tant que fonction de fenêtre, avec les lignes d’entrée divisées en deux partitions (une pour des IDs supérieurs à 0 et l’autre pour des IDs inférieurs ou égaux à 0). Des données supplémentaires ont été ajoutées à la table.

Ajouter des lignes à la table :

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

Afficher les données :

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

Interroger les données :

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

Exemple d’erreur

Si cette fonction reçoit des chaînes qui ne peuvent pas être converties en booléen, la fonction renverra une erreur :

select booland_agg('invalid type'); 100037 (22018): Boolean value 'invalid_type' is not recognized 
Copy