ビット単位の集計関数 - Amazon Redshift

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ビット単位の集計関数

ビット単位の集計関数は、ビット演算を計算し、整数値に変換または丸めることができる整数の列と列の集計を実行します。

ビット単位の集計の NULL の使用

ビット単位関数を Null 使用可能な列に適用する場合、NULL 値は関数の結果が計算される前に削除されます。集計を満たす行がない場合、ビット単位関数は NULL を返します。同じ動作が標準の集計関数に適用されます。次に例を示します。

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

ビット単位の集計の DISTINCT サポート

他の集計関数と同様に、ビット単位関数は DISTINCT キーワードをサポートします。

ただし、これらの関数で DISTINCT を使用しても結果に影響はありません。値の最初のインスタンスはビット単位の AND または OR 演算を満たすのに十分です。重複した値が検証中の式に存在しても違いはありません。

DISTINCT プロセスはクエリ実行オーバーヘッドを伴う可能性があるため、ビット単位関数で DISTINCT を使用しないことをお勧めします。

ビット単位の関数の概要例

以下は、ビット単位の関数を操作する方法を示すいくつかの概要の例を見つけることができます。また、各関数の説明で特定のコード例を見つけることができます。

ビット単位の関数の例は、TICKIT サンプルデータベースに基づいています。TICKIT サンプルデータベースの USERS テーブルには複数のブール列が含まれ、ユーザーごとに異なるイベントのタイプ (スポーツ、演劇、オペラなど) を好きかどうかを示しています。以下に例を示します。

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

USERS テーブルの新しいバージョンが別の方法で構築されていることを前提としています。この新しいバージョンでは、各ユーザーが好きまたは嫌いな 8 種類のイベントを (バイナリ形式で) 定義する 1 つの整数列。この設計では、各ビット位置はイベントの種類を表します。8 種類すべてのタイプが好きなユーザーは、8 ビットすべてのビットに 1 が設定されます (以下のテーブルの 1 行目)。これらのイベントも好きではないユーザーは、8 ビットすべてに 0 が設定されます (2 行目を参照)。スポーツとジャズのみが好きなユーザーを 3 行目に示しています。

SPORTS THEATRE JAZZ OPERA ROCK VEGAS BROADWAY CLASSICAL
ユーザー 1 1 1 1 1 1 1 1 1
ユーザー 2 0 0 0 0 0 0 0 0
ユーザー 3 1 0 1 0 0 0 0 0

次に示すように、データベーステーブルで、これらのバイナリ値は、整数として 1 つの LIKES 列に保存される場合があります。

ユーザー バイナリ値 保存値 (整数)
ユーザー 1 11111111 255
ユーザー 2 00000000 0
ユーザー 3 10100000 160