Kategorien:

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

BOOLOR_AGG

Gibt den logischen (booleschen) OR-Wert aller booleschen Nicht-NULL-Datensätze in einer Gruppe zurück.

BOOLOR_AGG gibt „true“ zurück, wenn mindestens ein Datensatz in der Gruppe „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> )

Fensterfunktionen

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

Argumente

Ausdruck

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

Partitionsausdruck

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);

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

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

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);

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

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

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