- 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 :
Syntaxe¶
Fonction d’agrégation
BOOLAND_AGG( <expr> )
Fonction de fenêtre
BOOLAND_AGG( <expr> ) OVER ( [ PARTITION BY <partition_expr> ] )
Arguments¶
exprL’expression d’entrée doit être une expression pouvant être évaluée en booléen ou convertie en booléen.
partition_exprCette colonne ou expression spécifie comment séparer l’entrée en partitions (sous-fenêtres).
Renvoie¶
La fonction renvoie une valeur de type BOOLEAN.
Notes sur l’utilisation¶
Numeric values are converted to
TRUEif they are non-zero.String and binary values aren’t supported because they can’t be converted to Boolean values.
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);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 | +----+------+-------+-------+-------+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 | +-----------------+-----------------+-----------------+-----------------+
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);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 | +----+-------+-------+-------+-------+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 | +----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+
Exemple d’erreur
Si cette fonction reçoit des chaînes qui ne peuvent pas être converties en booléen, elle renvoie une erreur :
select booland_agg('invalid type');
100037 (22018): Boolean value 'invalid_type' is not recognized