- Kategorien:
Aggregationsfunktionen (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:
Syntax¶
Aggregatfunktion
BOOLOR_AGG( <expr> )
Fensterfunktionen
BOOLOR_AGG( <expr> ) OVER ( [ PARTITION BY <partition_expr> ] )
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);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