ClickHouse/docs/ru/sql-reference/aggregate-functions/reference/grouparrayinsertat.md
BayoNet c1b71ab06e
DOCS-733: Fixed broken links in Russian version (#13106)
* CLICKHOUSEDOCS-733: Fixed some broken links. Updated introduction and TOC in aggregate functions.

* CLICKHOUSEDOCS-733: Fixed files endings.

* CLICKHOUSEDOCS-733: Returned the list of functions back to reference index.

Co-authored-by: Sergei Shtykov <bayonet@yandex-team.ru>
Co-authored-by: emironyuk <em@don.ru>
2020-07-30 15:49:19 +03:00

4.5 KiB
Raw Blame History

toc_priority
112

groupArrayInsertAt

Вставляет значение в заданную позицию массива.

Синтаксис

groupArrayInsertAt(default_x, size)(x, pos);

Если запрос вставляет вставляется несколько значений в одну и ту же позицию, то функция ведет себя следующим образом:

  • Если запрос выполняется в одном потоке, то используется первое из вставляемых значений.
  • Если запрос выполняется в нескольких потоках, то в результирующем массиве может оказаться любое из вставляемых значений.

Параметры

  • x — Значение, которое будет вставлено. Выражение, возвращающее значение одного из поддерживаемых типов данных.
  • pos — Позиция, в которую вставляется заданный элемент x. Нумерация индексов в массиве начинается с нуля. UInt32.
  • default_x — Значение по умолчанию для подстановки на пустые позиции. Опциональный параметр. Выражение, возвращающее значение с типом параметра x. Если default_x не определен, используются значения по умолчанию.
  • size— Длина результирующего массива. Опциональный параметр. При использовании этого параметра должно быть указано значение по умолчанию default_x. UInt32.

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

  • Массив со вставленными значениями.

Тип: Array.

Примеры

Запрос:

SELECT groupArrayInsertAt(toString(number), number * 2) FROM numbers(5);

Результат:

┌─groupArrayInsertAt(toString(number), multiply(number, 2))─┐
│ ['0','','1','','2','','3','','4']                         │
└───────────────────────────────────────────────────────────┘

Запрос:

SELECT groupArrayInsertAt('-')(toString(number), number * 2) FROM numbers(5);

Результат:

┌─groupArrayInsertAt('-')(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2','-','3','-','4']                          │
└────────────────────────────────────────────────────────────────┘

Запрос:

SELECT groupArrayInsertAt('-', 5)(toString(number), number * 2) FROM numbers(5);

Результат:

┌─groupArrayInsertAt('-', 5)(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2']                                             │
└───────────────────────────────────────────────────────────────────┘

Многопоточная вставка элементов в одну позицию.

Запрос:

SELECT groupArrayInsertAt(number, 0) FROM numbers_mt(10) SETTINGS max_block_size = 1;

В результат этого запроса мы получите случайное целое число в диапазоне [0,9]. Например:

┌─groupArrayInsertAt(number, 0)─┐
│ [7]                           │
└───────────────────────────────┘

Оригинальная статья