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.
Topik
Menggunakan NULLs agregasi bit-wise
Saat Anda menerapkan fungsi bit-wise ke kolom yang nullable, NULL nilai apa pun dihilangkan sebelum hasil fungsi dihitung. Jika tidak ada baris yang memenuhi syarat untuk agregasi, fungsi bit-wise akan kembali. 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)
DISTINCTdukungan 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 bit-wise AND atau OR. Tidak ada bedanya jika nilai duplikat hadir dalam ekspresi yang sedang dievaluasi.
Karena DISTINCT pemrosesan kemungkinan akan menimbulkan beberapa overhead eksekusi kueri, sebaiknya Anda tidak menggunakan fungsi DISTINCT 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 TICKIT sampel. USERSTabel dalam database TICKIT sampel 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 USERS tabel 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.
USER | SPORTS | THEATRE | JAZZ | OPERA | ROCK | VEGAS | BROADWAY | CLASSICAL |
---|---|---|---|---|---|---|---|---|
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 satu LIKES kolom 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 |