- Kategorien:
Aggregatfunktionen (Boolean) , Fensterfunktionen , Funktionen für bedingte Ausdrücke
BOOLAND_AGG¶
Gibt TRUE zurück, wenn alle booleschen Nicht-NULL-Datensätze in einer Gruppe den Wert TRUE ergeben.
Wenn alle Datensätze in der Gruppe NULL sind oder die Gruppe leer ist, gibt die Funktion NULL zurück.
- Siehe auch:
Syntax¶
Aggregatfunktion
BOOLAND_AGG( <expr> )
Fensterfunktionen
BOOLAND_AGG( <expr> ) OVER ( [ PARTITION BY <partition_expr> ] )
Argumente¶
exprDer Eingabeausdruck muss ein Ausdruck sein, der in einen booleschen Wert ausgewertet oder in einen booleschen Wert umgewandelt werden kann.
partition_exprDiese Spalte oder dieser Ausdruck gibt an, wie die Eingabe in Partitionen (Unterfenster) unterteilt wird.
Rückgabewerte¶
Gibt einen Wert vom Typ BOOLEAN zurück.
Nutzungshinweise¶
Numeric values are converted to
TRUEif they are non-zero.String and binary values aren’t supported because they can’t be converted to Boolean values.
Wenn diese Funktion als Fensterfunktion aufgerufen wird, wird sie nicht unterstützt:
Eine ORDER BY-Klausel innerhalb der OVER-Klausel.
Explizite Fensterrahmen.
Beispiele¶
Aggregatfunktion
Das folgende Beispiel zeigt, dass booland_agg den Wert „true“ zurückgibt, wenn alle Eingabewerte „true“ sind.
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 booland_agg(c1), booland_agg(c2), booland_agg(c3), booland_agg(c4) from test_boolean_agg; +-----------------+-----------------+-----------------+-----------------+ | BOOLAND_AGG(C1) | BOOLAND_AGG(C2) | BOOLAND_AGG(C3) | BOOLAND_AGG(C4) | |-----------------+-----------------+-----------------+-----------------| | True | False | False | 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, booland_agg(c1) OVER (PARTITION BY (id > 0)), booland_agg(c2) OVER (PARTITION BY (id > 0)), booland_agg(c3) OVER (PARTITION BY (id > 0)), booland_agg(c4) OVER (PARTITION BY (id > 0)) from test_boolean_agg order by id; +----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+ | ID | BOOLAND_AGG(C1) OVER (PARTITION BY (ID > 0)) | BOOLAND_AGG(C2) OVER (PARTITION BY (ID > 0)) | BOOLAND_AGG(C3) OVER (PARTITION BY (ID > 0)) | BOOLAND_AGG(C4) OVER (PARTITION BY (ID > 0)) | |----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------| | -4 | False | False | False | True | | -3 | False | False | False | True | | -2 | False | False | False | True | | -1 | False | False | False | True | | 1 | True | False | False | False | | 2 | True | False | False | False | | 3 | True | False | False | False | | 4 | True | False | False | False | +----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+
Fehlerbeispiel
Wenn dieser Funktion Zeichenfolgen übergeben werden, die nicht in Boolesche Werte konvertiert werden können, gibt die Funktion einen Fehler aus:
select booland_agg('invalid type');
100037 (22018): Boolean value 'invalid_type' is not recognized