Catégories :

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

BOOLOR_AGG

Renvoie TRUE si au moins un enregistrement booléen dans un groupe est évalué à TRUE.

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

Voir aussi :

BOOLOR , BOOLAND_AGG , BOOLXOR_AGG

Syntaxe

Fonction d’agrégation

BOOLOR_AGG( <expr> )

Fonction de fenêtre

BOOLOR_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 valeurs chaînes et binaires ne sont pas prises en charge car elles ne peuvent pas être converties en valeurs booléennes.

  • 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 boolor_agg renvoie true si au moins une des valeurs d’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 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          |
+----------------+----------------+----------------+----------------+

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

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

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