Fungsi agregat bit-wise - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Fungsi agregat bit-wise

Fungsi agregat bit-wise menghitung operasi bit untuk melakukan agregasi kolom integer dan kolom yang dapat dikonversi atau dibulatkan ke nilai integer.

Menggunakan NULL dalam agregasi bit-wise

Saat Anda menerapkan fungsi bit-wise ke kolom yang nullable, nilai NULL apa pun dihilangkan sebelum hasil fungsi dihitung. Jika tidak ada baris yang memenuhi syarat untuk agregasi, fungsi bit-wise mengembalikan NULL. Perilaku yang sama berlaku untuk fungsi agregat reguler. Berikut adalah contohnya.

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

Dukungan DISTINCT untuk agregasi bit-wise

Seperti fungsi agregat lainnya, fungsi bit-wise mendukung kata kunci DISTINCT.

Namun, menggunakan DISTINCT dengan fungsi-fungsi ini tidak berdampak pada hasil. Contoh pertama dari suatu nilai cukup untuk memenuhi operasi AND atau OR yang sedikit bijak. Tidak ada bedanya jika nilai duplikat hadir dalam ekspresi yang sedang dievaluasi.

Karena pemrosesan DISTINCT kemungkinan akan menimbulkan beberapa overhead eksekusi kueri, sebaiknya Anda tidak menggunakan DISTINCT dengan fungsi bit-wise.

Contoh ikhtisar untuk fungsi bit-wise

Berikut ini, Anda dapat menemukan beberapa contoh ikhtisar yang menunjukkan cara bekerja dengan fungsi bit-wise. Anda juga dapat menemukan contoh kode spesifik dengan setiap deskripsi fungsi.

Contoh untuk fungsi bit-wise didasarkan pada database sampel TICKIT. Tabel USERS dalam database sampel TICKIT berisi beberapa kolom Boolean yang menunjukkan apakah setiap pengguna diketahui menyukai berbagai jenis acara, seperti olahraga, teater, opera, dan sebagainya. Berikut contohnya.

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

Asumsikan bahwa versi baru tabel USERS dibangun dengan cara yang berbeda. Dalam versi baru ini, kolom integer tunggal yang mendefinisikan (dalam bentuk biner) delapan jenis peristiwa yang disukai atau tidak disukai setiap pengguna. Dalam desain ini, setiap posisi bit mewakili jenis acara. Seorang pengguna yang menyukai semua delapan jenis memiliki semua delapan bit diatur ke 1 (seperti pada baris pertama dari tabel berikut). Seorang pengguna yang tidak menyukai peristiwa ini memiliki semua delapan bit disetel ke 0 (lihat baris kedua). Seorang pengguna yang hanya menyukai olahraga dan jazz diwakili di baris ketiga berikut.

OLAHRAGA TEATER JAZZ OPERA BATU VEGAS BROADWAY KLASIK
Pengguna 1 1 1 1 1 1 1 1 1
Pengguna 2 0 0 0 0 0 0 0 0
Pengguna 3 1 0 1 0 0 0 0 0

Dalam tabel database, nilai-nilai biner ini dapat disimpan dalam kolom LIKES tunggal sebagai bilangan bulat, seperti yang ditunjukkan berikut.

Pengguna Nilai biner Nilai tersimpan (integer)
Pengguna 1 11111111 255
Pengguna 2 00000000 0
Pengguna 3 10100000 160