Bitweise Aggregationsfunktionen - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bitweise Aggregationsfunktionen

Bitweise Aggregatfunktionen berechnen Bitoperationen, um die Aggregation von Ganzzahlspalten und Spalten, die auf ganzzahlige Werte konvertiert oder gerundet werden können, durchzuführen.

Verwendung NULLs in bitweisen Aggregationen

Wenn Sie eine bitweise Funktion auf eine Spalte anwenden, für die NULL-Werte zulässig sind, werden alle NULL Werte eliminiert, bevor das Funktionsergebnis berechnet wird. Wenn keine Zeilen für die Aggregation in Frage kommen, kehrt die bitweise Funktion zurück. NULL Das gleiche Verhalten gilt für reguläre Aggregationsfunktionen. Im Folgenden sehen Sie ein Beispiel.

select sum(venueseats), bit_and(venueseats) from venue where venueseats is null; sum | bit_and ------+--------- null | null (1 row)

DISTINCTUnterstützung für bitweise Aggregationen

Wie andere Aggregatfunktionen unterstützen auch bitweise Funktionen das Schlüsselwort. DISTINCT

Die Verwendung DISTINCT mit diesen Funktionen hat jedoch keine Auswirkungen auf die Ergebnisse. Die erste Instanz eines Werts reicht aus, um bitweise Operationen AND oder OR-Operationen zu erfüllen. Das Vorhandensein duplizierter Werte im ausgewerteten Ausdruck hat keine Auswirkungen.

Da die DISTINCT Verarbeitung mit einem gewissen Aufwand bei der Ausführung von Abfragen verbunden sein kann, empfehlen wir, sie nicht DISTINCT zusammen mit bitweisen Funktionen zu verwenden.

Übersicht: Beispiele für bitweise Funktionen

Unten sehen Sie eine Übersicht mit einigen Beispielen für Einsatzmöglichkeiten von bitweisen Funktionen. Zu jeder Funktionsbeschreibung gehören spezifische Codebeispiele.

Die Beispiele für die bitweisen Funktionen basieren auf der Beispieldatenbank. TICKIT Die USERS Tabelle in der TICKIT Beispieldatenbank enthält mehrere boolesche Spalten, die angeben, ob jeder Benutzer bekanntermaßen verschiedene Arten von Veranstaltungen mag, z. B. Sport, Theater, Oper usw. Ein Beispiel folgt.

select userid, username, lastname, city, state, likesports, liketheatre from users limit 10; userid | username | lastname | city | state | likesports | liketheatre -------+----------+-----------+--------------+-------+------------+------------- 1 | JSG99FHE | Taylor | Kent | WA | t | t 9 | MSD36KVR | Watkins | Port Orford | MD | t | f

Gehen Sie davon aus, dass eine neue Version der USERS Tabelle auf andere Weise erstellt wurde. In der neuen Version ist eine einzelne Ganzzahlspalte enthalten, die (in binärer Form) acht Arten von Veranstaltungen definiert, die den einzelnen Benutzern gefallen oder nicht gefallen. In diesem Entwurf stellt jede Bitposition einen Veranstaltungstyp dar. Für einen Benutzer, dem alle acht Veranstaltungen gefallen, sind alle acht Bits auf 1 festgelegt (wie in der ersten Zeile der folgenden Tabelle gezeigt). Für einen Benutzer, dem keine dieser Veranstaltungen gefallen, sind alle acht Bits auf 0 festgelegt (wie in der zweiten Zeile gezeigt). Ein Benutzer, dem nur Sport und Jazz gefallen, wird in der dritten Zeile gezeigt.

SPORTS THEATRE JAZZ OPERA ROCK VEGAS BROADWAY CLASSICAL
Benutzer 1 1 1 1 1 1 1 1 1
Benutzer 2 0 0 0 0 0 0 0 0
Benutzer 3 1 0 1 0 0 0 0 0

In der Datenbanktabelle können diese Binärwerte in einer einzigen LIKES Spalte als Ganzzahlen gespeichert werden, wie im Folgenden gezeigt.

Benutzer Binärwert Gespeicherter Wert (Ganzzahl)
Benutzer 1 11111111 255
Benutzer 2 00000000 0
Benutzer 3 10100000 160