Перейти к основному содержимому

bitmap_agg

Описание

Агрегирует значения (исключая NULL) в столбце в bitmap (несколько строк в одну строку).

Синтаксис

BITMAP_AGG(col)

Параметры

col: столбец, значения которого вы хотите агрегировать. Должен иметь тип BOOLEAN, TINYINT, SMALLINT, INT, BIGINT или LARGEINT.

Возвращаемое значение

Возвращает значение типа BITMAP.

Примечания по использованию

Если значение в строке меньше 0 или больше 18446744073709551615, значение будет проигнорировано и не добавлено в Bitmap (см. Пример 3).

Примеры

Рассмотрим следующую таблицу данных в качестве примера:

mysql> CREATE TABLE t1_test (
c1 int,
c2 boolean,
c3 tinyint,
c4 int,
c5 bigint,
c6 largeint
)
DUPLICATE KEY(c1)
DISTRIBUTED BY HASH(c1)
BUCKETS 1
PROPERTIES ("replication_num" = "3");

INSERT INTO t1_test VALUES
(1, true, 11, 111, 1111, 11111),
(2, false, 22, 222, 2222, 22222),
(3, true, 33, 333, 3333, 33333),
(4, null, null, null, null, null),
(5, -1, -11, -111, -1111, -11111),
(6, null, null, null, null, "36893488147419103232");

select * from t1_test order by c1;
+------+------+------+------+-------+----------------------+
| c1 | c2 | c3 | c4 | c5 | c6 |
+------+------+------+------+-------+----------------------+
| 1 | 1 | 11 | 111 | 1111 | 11111 |
| 2 | 0 | 22 | 222 | 2222 | 22222 |
| 3 | 1 | 33 | 333 | 3333 | 33333 |
| 4 | NULL | NULL | NULL | NULL | NULL |
| 5 | 1 | -11 | -111 | -1111 | -11111 |
| 6 | NULL | NULL | NULL | NULL | 36893488147419103232 |
+------+------+------+------+-------+----------------------+

Пример 1: Агрегирование значений в столбце c1 в один bitmap.

mysql> select bitmap_to_string(bitmap_agg(c1)) from t1_test;
+----------------------------------+
| bitmap_to_string(bitmap_agg(c1)) |
+----------------------------------+
| 1,2,3,4,5,6 |
+----------------------------------+

Пример 2: Агрегирование значений в столбце c2 в один bitmap (NULL игнорируются).

mysql> SELECT BITMAP_TO_STRING(BITMAP_AGG(c2)) FROM t1_test;
+----------------------------------+
| bitmap_to_string(bitmap_agg(c2)) |
+----------------------------------+
| 0,1 |
+----------------------------------+

Пример 3: Агрегирование значений в столбце c6 в один bitmap (последние два значения, превышающие диапазон значений, игнорируются).

mysql> select bitmap_to_string(bitmap_agg(c6)) from t1_test;
+----------------------------------+
| bitmap_to_string(bitmap_agg(c6)) |
+----------------------------------+
| 11111,22222,33333 |
+----------------------------------+

Ключевые слова

BITMAP_AGG, BITMAP