- Kategorien:
Aggregationsfunktionen (Bitweise), Fensterfunktionen (Allgemein), Bitweise Ausdrucksfunktionen
BITAND_AGG¶
Gibt den bitweisen AND-Wert aller numerischen Einträge in einer Gruppe zurück, die ungleich NULL sind.
Wenn für alle Zeilen das Bit auf 1 gesetzt ist, wird für jede Bitposition das Bit im Ergebnis auf 1 gesetzt. Wenn bei Zeilen dieses Bit auf null gesetzt ist, ist das Ergebnis null.
Wenn alle Einträge in der Gruppe NULL sind oder die Gruppe leer ist, gibt die Funktion NULL zurück.
- Aliasse:
BITANDAGG , BIT_AND_AGG , BIT_ANDAGG
- Siehe auch:
Syntax¶
Aggregatfunktion
BITAND_AGG( <expr1> )
Fensterfunktionen
BITAND_AGG(<Ausdruck1>) OVER ([PARTITION BY <Ausdruck2>])
Argumente¶
expr1
Der Eingabeausdruck muss ein Ausdruck sein, der in eine Zahl ausgewertet oder in eine Zahl umgewandelt werden kann.
expr2
Mit diesem Ausdruck werden die Zeilen in Partitionen gruppiert.
Rückgabewerte¶
Der Datentyp des zurückgegebenen Werts ist NUMERIC(38, 0).
Nutzungshinweise¶
Numerische Werte werden zum nächsten ganzzahligen Datentyp aggregiert. Dezimal- und Gleitkommawerte werden vor der Aggregation auf die nächste ganze Zahl gerundet.
Durch das Aggregieren einer Zeichen-/Textspalte (Datentyp VARCHAR, CHAR, STRING usw.) werden die Eingabewerte implizit in FLOAT umgewandelt und dann auf die nächste ganze Zahl gerundet. Wenn die Umwandlung nicht möglich ist, wird der Wert als NULL behandelt.
Das Schlüsselwort DISTINCT kann bei diesen Funktionen angegeben werden, hat jedoch keine Auswirkungen.
Bei Verwendung als Fensterfunktion:
Diese Funktion unterstützt nicht:
ORDER BY-Unterklausel in der OVER()-Klausel
Fensterrahmen
Beispiele¶
Erstellen Sie die Tabelle, und laden Sie die Daten:
CREATE OR REPLACE TABLE bitwise_example (k int, d decimal(10,5), s1 varchar(10), s2 varchar(10)); INSERT INTO bitwise_example VALUES (15, 1.1, '12','one'), (26, 2.9, '10','two'), (12, 7.1, '7.9','two'), (14, null, null,'null'), (8, null, null, 'null'), (null, 9.1, '14','nine');
Zeigen Sie die Daten an:
SELECT k AS k_col, d AS d_col, s1, s2 FROM bitwise_example ORDER BY k_col; +-------+---------+------+------+ | K_COL | D_COL | S1 | S2 | |-------+---------+------+------| | 8 | NULL | NULL | null | | 12 | 7.10000 | 7.9 | two | | 14 | NULL | NULL | null | | 15 | 1.10000 | 12 | one | | 26 | 2.90000 | 10 | two | | NULL | 9.10000 | 14 | nine | +-------+---------+------+------+
Fragen Sie die Daten ab:
select bitand_agg(k), bitand_agg(d), bitand_agg(s1) from bitwise_example; +---------------+---------------+----------------+ | BITAND_AGG(K) | BITAND_AGG(D) | BITAND_AGG(S1) | |---------------+---------------+----------------| | 8 | 1 | 8 | +---------------+---------------+----------------+
Fragen Sie die Daten ab, und verwenden Sie GROUP BY
:
select s2, bitand_agg(k), bitand_agg(d) from bitwise_example group by s2 order by 3; +------+---------------+---------------+ | S2 | BITAND_AGG(K) | BITAND_AGG(D) | |------+---------------+---------------| | one | 15 | 1 | | two | 8 | 3 | | nine | NULL | 9 | | null | 8 | NULL | +------+---------------+---------------+
Wenn Sie diese Funktionszeichenfolgen übergeben, die nicht in Zahlen konvertiert werden können, erhalten Sie eine Fehlermeldung:
select bitand_agg(s2) from bitwise_example;100038 (22018): Numeric value 'one' is not recognized