Funzioni di aggregazione bit per bit - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzioni di aggregazione bit per bit

Le funzioni di aggregazione bit per bit calcolano le operazioni di bit per eseguire l'aggregazione di colonne intere e colonne che possono essere convertite o arrotondate a valori interi.

Utilizzo in aggregazioni bit per bit NULLs

Quando si applica una funzione bit per bit a una colonna con valori nullabili, tutti NULL i valori vengono eliminati prima del calcolo del risultato della funzione. Se nessuna riga è idonea per l'aggregazione, viene restituita la funzione bit per bit. NULL Lo stesso comportamento si applica alle normali funzioni di aggregazione. Di seguito è riportato un esempio.

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

DISTINCTsupporto per aggregazioni bit per bit

Come altre funzioni aggregate, le funzioni bit per bit supportano la parola chiave. DISTINCT

Tuttavia, l'utilizzo DISTINCT con queste funzioni non ha alcun impatto sui risultati. La prima istanza di un valore è sufficiente per soddisfare le operazioni AND OR o bit per bit. Non fa alcuna differenza se sono presenti valori duplicati nell'espressione valutata.

Poiché è probabile che l'DISTINCTelaborazione comporti un sovraccarico di esecuzione delle query, si consiglia di non utilizzarla con funzioni bit per bit. DISTINCT

Esempi di panoramica per le funzioni bit-wise

Di seguito, è possibile trovare alcuni esempi di panoramica che dimostrano come utilizzare le funzioni bit-wise. Sono presenti anche esempi di codice specifici con la descrizione di ogni funzione.

Gli esempi di funzioni bit per bit si basano sul database di esempio. TICKIT La USERS tabella del database di TICKIT esempio contiene diverse colonne booleane che indicano se è noto che a ciascun utente piacciono diversi tipi di eventi, come sport, teatro, opera e così via. Di seguito è riportato un esempio.

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

Supponiamo che una nuova versione della USERS tabella sia costruita in modo diverso. In questa nuova versione, una singola colonna di numeri interi che definisce (in formato binario) otto tipi di eventi che piace o non piace a ciascun utente. In questo progetto, ogni posizione di bit rappresenta un tipo di evento. Un utente a cui piacciono tutti gli otto tipi ha tutti gli otto bit impostati su 1 (come nella prima riga della seguente tabella). Un utente a cui non piace uno di questi eventi ha tutti gli otto bit impostati su 0 (vedere la seconda riga). Un utente che ama solo sport e jazz è rappresentato nella terza riga:

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

Nella tabella del database, questi valori binari possono essere memorizzati in una singola LIKES colonna come numeri interi, come illustrato di seguito.

Utente Valore binario Valore archiviato (intero)
Utente 1 11111111 255
Utente 2 00000000 0
Utente 3 10100000 160