/* Available in MySQL and PostgreSQL */
SELECT
Name,
CountryCode,
BIT_AND(Population) over p_code and_population,
BIT_OR(Population) over p_code or_population,
BIT_XOR(Population) over p_code xor_population
FROM city
WINDOW p_code AS (partition BY CountryCode)
| Name | CountryCode | and_population | or_population | xor_population |
| Oranjestad | ABW | 29,034 | 29,034 | 29,034 |
| Herat | AFG | 288 | 1,834,940 | 1,809,428 |
| Qandahar | AFG | 288 | 1,834,940 | 1,809,428 |
| Kabul | AFG | 288 | 1,834,940 | 1,809,428 |
| Mazar-e-Sharif | AFG | 288 | 1,834,940 | 1,809,428 |
| Benguela | AGO | 16,384 | 2,097,148 | 1,926,184 |
| Lobito | AGO | 16,384 | 2,097,148 | 1,926,184 |
| Huambo | AGO | 16,384 | 2,097,148 | 1,926,184 |
| Luanda | AGO | 16,384 | 2,097,148 | 1,926,184 |
| ... |
| Функция BIT_AND() в MySQL — это агрегатная функция, которая выполняет побитовую операцию AND со всеми битами в столбце таблицы. Если оба бита равны 1, в результате получается 1, иначе — 0. BIT_OR() выполняет побитовую операцию OR со всеми битами в столбце таблицы. Если оба бита равны 0, в результате получается 0, иначе — 1. BIT_XOR() выполняет побитовую операцию XOR со всеми битами в столбце таблицы. Возвращает 1, если только 1 бит из двух равен 1, иначе — 0. |