Kategorien:

Aggregatfunktionen (Boolean), Fensterfunktionen, Funktionen für bedingte Ausdrücke

BOOLOR_AGG

Gibt TRUE zurück, wenn mindestens ein boolescher Datensatz in einer Gruppe den Wert TRUE ergibt.

Wenn alle Datensätze in der Gruppe NULL sind oder die Gruppe leer ist, gibt die Funktion NULL zurück.

Siehe auch:

BOOLOR, BOOLAND_AGG, BOOLXOR_AGG

Syntax

Aggregatfunktion

BOOLOR_AGG( <expr> )
Copy

Fensterfunktionen

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

Argumente

expr

Der Eingabeausdruck muss ein Ausdruck sein, der in einen booleschen Wert ausgewertet oder in einen booleschen Wert umgewandelt werden kann.

partition_expr

Diese Spalte oder dieser Ausdruck gibt an, wie die Eingabe in Partitionen (Unterfenster) unterteilt wird.

Rückgabewerte

Der Datentyp des zurückgegebenen Werts ist BOOLEAN.

Nutzungshinweise

  • Numerische Werte, Dezimal- und Gleitkommawerte werden in „true“ konvertiert, wenn sie nicht Null sind.

  • Werte vom Typ Zeichen/Text werden nicht unterstützt, da sie nicht in Boolesche Werte konvertiert werden können.

  • Bei Verwendung als Fensterfunktion:

    • Diese Funktion unterstützt nicht:

      • ORDER BY-Unterklausel in der OVER-Klausel

      • Fensterrahmen

Beispiele

Aggregatfunktion

Das folgende Beispiel zeigt, dass boolor_agg den Wert „true“ zurückgibt, wenn mindestens ein Eingabewert „true“ ist.

Erstellen und laden Sie die Tabelle:

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

Zeigen Sie die Daten an:

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

Fragen Sie die Daten ab:

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

Fensterfunktionen

Dieses Beispiel ähnelt dem vorherigen Beispiel, zeigt jedoch die Verwendung als Fensterfunktion, wobei die Eingabezeilen in zwei Partitionen aufgeteilt sind (eine für IDs größer als 0 und eine für IDs kleiner oder gleich0). Zusätzliche Daten wurden der Tabelle hinzugefügt.

Fügen Sie der Tabelle Zeilen hinzu:

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

Zeigen Sie die Daten an:

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

Fragen Sie die Daten ab:

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

Fehlerbeispiel

Wenn dieser Funktion Zeichenfolgen übergeben werden, die nicht in Boolesche Werte konvertiert werden können, gibt die Funktion einen Fehler aus:

select boolor_agg('invalid type');

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