- Catégories :
Fonctions d’agrégation (Boolean) , Fonctions de fenêtre , Fonctions d’expressions conditionnelles
BOOLXOR_AGG¶
Renvoie TRUE si et seulement si exactement un enregistrement dans le groupe correspond à 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
BOOLXOR_AGG( <expr> )
Fonction de fenêtre
BOOLXOR_AGG( <expr> ) OVER ( [ PARTITION BY <partition_expr> ] )
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 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¶
L’exemple suivant montre que boolxor_agg renvoie true lorsque l’une des valeurs en entrée est 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 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 | +-----------------+-----------------+-----------------+-----------------+
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, 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 | +----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+
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 boolxor_agg('invalid type');
100037 (22018): Boolean value 'invalid_type' is not recognized