array_unique_agg
Агрегирует уникальные значения (включая NULL) из столбца ARRAY в массив (из нескольких строк в одну строку).
Эта функция поддерживается начиная с версии v1.5.2.
Синтаксис
ARRAY_UNIQUE_AGG(col)
Параметры
col: столбец, значения которого вы хотите агрегировать. Поддерживаемый тип данных - ARRAY.
Возвращаемое значение
Возвращает значение типа ARRAY.
Примечания по использованию
- Порядок элементов в массиве случайный.
- Тип данных элементов в возвращаемом массиве совпадает с типом данных элементов во входном столбце.
- Возвращает
NULL, если нет совпадающих значений.
Примеры
Рассмотрим следующую таблицу данных в качестве примера:
mysql > select * from array_unique_agg_example;
+------+--------------+
| a | b |
+------+--------------+
| 2 | [1,null,2,4] |
| 2 | [1,null,3] |
| 1 | [1,1,2,3] |
| 1 | [2,3,4] |
+------+--------------+
Пример 1: Группировка значений в столбце a и агрегация уникальных значений в столбце b в массив.
mysql > select a, array_unique_agg(b) from array_unique_agg_example group by a;
+------+---------------------+
| a | array_unique_agg(b) |
+------+---------------------+
| 1 | [4,1,2,3] |
| 2 | [4,1,2,3,null] |
+------+---------------------+
Пример 2: Агрегация значений в столбце b с использованием предложения WHERE. Если никакие данные не соответствуют условию фильтра, возвращается значение NULL.
mysql > select array_unique_agg(b) from array_unique_agg_example where a < 0;
+---------------------+
| array_unique_agg(b) |
+---------------------+
| NULL |
+---------------------+
Ключевые слова
ARRAY_UNIQUE_AGG, ARRAY