Skip to main content

Обзор

Арифметические функции применимы к любым двум операндам типа UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32 или Float64. Перед выполнением операции оба операнда приводятся к типу результата. Тип результата определяется следующим образом (если в документации по функции ниже не указано иначе):
  • Если оба операнда имеют разрядность до 32 бит, размер типа результата будет равен размеру следующего большего типа после большего из двух операндов (повышение разрядности целых чисел). Например, UInt8 + UInt16 = UInt32 или Float32 * Float32 = Float64.
  • Если один из операндов имеет разрядность 64 бита или больше, размер типа результата будет таким же, как у большего из двух операндов. Например, UInt32 + UInt128 = UInt128 или Float32 * Float64 = Float64.
  • Если один из операндов знаковый, тип результата также будет знаковым, в противном случае — беззнаковым. Например, UInt32 * Int32 = Int64 или UInt32 * UInt32 = UInt64.
Эти правила гарантируют, что тип результата будет наименьшим типом, способным представить все возможные результаты. Хотя это создает риск переполнения на границах диапазона значений, такой подход обеспечивает быстрое выполнение вычислений с использованием максимальной нативной разрядности целых чисел — 64 бита. Такое поведение также гарантирует совместимость со многими другими базами данных, в которых 64-битные целые числа (BIGINT) являются самым большим целочисленным типом. Пример:
Переполнения возникают так же, как в C++.

abs

Добавленный в: v1.1.0 Вычисляет абсолютное значение x. Не имеет эффекта, если x имеет беззнаковый тип. Если x имеет знаковый тип, возвращает беззнаковое число. Синтаксис
Аргументы
  • x — Значение, для которого вычисляется абсолютное значение
Возвращаемое значение Абсолютное значение x Примеры Пример использования
Query
Response

avg2

Добавленный в: v25.11.0 Вычисляет и возвращает среднее значение указанных аргументов. Поддерживает числовые и временные типы. Синтаксис
Аргументы
  • x1, x2] — Принимает два значения для вычисления среднего.
Возвращаемое значение Возвращает среднее значение переданных аргументов с приведением к наиболее широкому совместимому типу. Примеры Числовые типы
Query
Response
Типы Decimal
Query
Response
Типы дат
Query
Response
Типы DateTime
Query
Response
Типы Time64
Query
Response

byteSwap

Добавленный в: v23.10.0 Меняет порядок байтов целого числа на обратный, то есть изменяет его порядок байтов. Приведённый ниже пример можно разобрать следующим образом:
  1. Преобразуйте целое число из десятичной системы в эквивалентное шестнадцатеричное представление в формате big-endian, то есть 3351772109 -> C7 C7 FB CD (4 байта)
  2. Переставьте байты в обратном порядке, то есть C7 C7 FB CD -> CD FB C7 C7
  3. Преобразуйте результат обратно в целое число, предполагая формат big-endian, то есть CD FB C7 C7 -> 3455829959 Одно из применений этой функции — перестановка байтов в IPv4-адресах:
Синтаксис
Аргументы
  • x — Целое число. (U)Int*
Возвращаемое значение Возвращает x с байтами в обратном порядке. (U)Int* Примеры Пример использования
Query
Response
8-битный
Query
Response
16-битный
Query
Response
32-разрядный
Query
Response
64-разрядная
Query
Response

divide

Добавленный в: v1.1.0 Вычисляет частное двух значений a и b. Тип результата всегда — Float64. Для целочисленного деления используется функция intDiv.
При делении на 0 возвращается inf, -inf или nan.
Синтаксис
Аргументы
  • x — Делимое - y — Делитель
Возвращаемое значение Частное от деления x на y Примеры Деление двух чисел
Query
Response
Деление на ноль
Query
Response

divideDecimal

Добавленный в: v22.12.0 Выполняет деление двух десятичных чисел. Результирующее значение имеет тип Decimal256. Масштаб результата можно явно задать с помощью аргумента result_scale (константный Integer в диапазоне [0, 76]). Если он не указан, масштаб результата будет равен максимальному масштабу среди переданных аргументов.
Эта функция работает значительно медленнее, чем обычная divide. Если вам не требуется контролируемая точность и/или нужны быстрые вычисления, используйте divide.
Синтаксис
Аргументы
  • x — Первое значение: Decimal. - y — Второе значение: Decimal. - result_scale — Указанный масштаб результата. Тип: Int/UInt.
Возвращаемое значение Результат деления с указанным масштабом. Decimal256 Примеры Пример 1
Query
Response
Пример 2
Query
Response

divideOrNull

Добавленный в: v25.5.0 Аналогично divide, но при делении на ноль возвращает NULL. Синтаксис
Аргументы
  • x — делимое - y — делитель
Возвращаемое значение Результат деления x на y, или NULL. Примеры Деление на ноль
Query
Response

gcd

Добавленный в: v1.1.0 Возвращает наибольший общий делитель двух значений a и b. Исключение генерируется при делении на ноль или при делении минимального отрицательного числа на -1. Синтаксис
Аргументы
  • x — Первое целое число - y — Второе целое число
Возвращаемое значение Наибольший общий делитель чисел x и y. Примеры Пример использования
Query
Response

ifNotFinite

Добавленный в: v20.3.0 Проверяет, является ли число с плавающей запятой конечным. Аналогичный результат можно получить с помощью тернарного оператора: isFinite(x) ? x : y. Синтаксис
Аргументы
  • x — Значение, которое нужно проверить на бесконечность. Float*
  • y — Резервное значение. Float*
Возвращаемое значение
  • x, если x является конечным.
  • y, если x не является конечным.
Примеры Пример использования
Query
Response

intDiv

Добавленный в: v1.1.0 Выполняет целочисленное деление значения x на y. Иными словами, вычисляет частное, округлённое вниз до ближайшего меньшего целого числа. Результат имеет ту же разрядность, что и делимое (первый параметр). Исключение генерируется при делении на ноль, если частное не помещается в диапазон делимого, или при делении минимального отрицательного числа на минус один. Синтаксис
Аргументы
  • x — Левый операнд. - y — Правый операнд.
Возвращаемое значение Результат целочисленного деления x на y Примеры Целочисленное деление двух чисел с плавающей точкой
Query
Response
Частное выходит за диапазон значений делимого
Query
Response

intDivOrNull

Добавленный в: v25.5.0 То же, что и intDiv, но возвращает NULL при делении на ноль или при делении наименьшего отрицательного числа на минус единицу. Синтаксис
Аргументы
  • x — Левый операнд. (U)Int*
  • y — Правый операнд. (U)Int*
Возвращаемое значение Результат целочисленного деления x на y или NULL. Примеры Целочисленное деление на ноль
Query
Response
Деление наименьшего отрицательного числа на -1
Query
Response

intDivOrZero

Добавленный в: v1.1.0 То же, что и intDiv, но возвращает ноль при делении на ноль или при делении наименьшего отрицательного числа на минус единицу. Синтаксис
Аргументы
  • a — Левый операнд. (U)Int*
  • b — Правый операнд. (U)Int*
Возвращаемое значение Результат целочисленного деления a на b, либо ноль. Примеры Целочисленное деление на ноль
Query
Response
Деление минимального отрицательного числа на -1
Query
Response

isFinite

Добавленный в: v1.1.0 Возвращает 1, если аргумент Float32, Float64 или BFloat16 не является бесконечным и не равен NaN, в противном случае возвращает 0. Синтаксис
Аргументы
  • x — Число для проверки на конечность. Float* или BFloat16
Возвращаемое значение 1, если x не является бесконечным и не равно NaN, иначе 0. Примеры Проверка, является ли число конечным
Query
Response

isInfinite

Добавленный в: v1.1.0 Возвращает 1, если аргумент типа Float32, Float64 или BFloat16 является бесконечностью; в противном случае возвращает 0. Обратите внимание, что для NaN также возвращается 0. Синтаксис
Аргументы
  • x — число, которое нужно проверить на бесконечность. Float* или BFloat16
Возвращаемое значение 1, если x бесконечно, иначе — 0 (в том числе для NaN). Примеры Проверка, является ли число бесконечным
Query
Response

isNaN

Добавленный в: v1.1.0 Возвращает 1, если аргумент типа Float32, Float64 или BFloat16 имеет значение NaN, в противном случае возвращает 0. Синтаксис
Аргументы
  • x — аргумент, для которого проверяется, является ли он NaN. Float* или BFloat16
Возвращаемое значение 1, если значение равно NaN, иначе 0 Примеры Пример использования
Query
Response

kqlBin

Добавлено в: v26.8.0 Округляет значение вниз до величины, кратной roundTo, — так же, как функция bin() в Kusto Query Language. Правило зависит от типов аргументов: число округляется арифметически, timespan (представляющий собой Interval) округляется по timespan, а дата и время также округляются по timespan. В KQL значение даты и времени — это DateTime64; более узкие типы-носители DateTime и Date отклоняются, так как они не способны представить любой bin, который может вернуть дата и время в KQL. Эта функция обеспечивает работу bin() при dialect = 'kusto'. Она не предназначена для прямого вызова из SQL. Синтаксис
Аргументы
  • value — число, timespan или дата и время (DateTime64). - roundTo — размер бина.
Возвращаемое значение value, округлённое вниз до ближайшего кратного roundTo. Примеры number
Query
Response
timespan
Query
Response
дата и время
Query
Response

kqlBinAt

Добавлено в: v26.8.0 Округляет значение вниз до кратного binSize, отсчитываемого от fixedPoint, — так же, как это делает bin_at() в Kusto Query Language. Границы бинов могут оказаться как до, так и после фиксированной точки. Правило зависит от типов аргументов: число округляется арифметически, timespan (то есть Interval) округляется по timespan, отсчитываемому от timespan, а дата и время округляются по timespan, отсчитываемому от фиксированной точки типа дата и время. Дата и время в KQL — это DateTime64; более узкие типы DateTime и Date не принимаются, поскольку они не способны представить все бины, которые может выдать дата и время в KQL. Эта функция обеспечивает работу bin_at() при dialect = 'kusto'. Она не предназначена для прямого вызова из SQL. Синтаксис
Аргументы
  • value — число, timespan или дата и время (DateTime64). - binSize — размер бина. - fixedPoint — точка, от которой отсчитываются bins.
Возвращаемое значение value, округлённое вниз до ближайшего кратного binSize, отсчитываемого от fixedPoint. Примеры число
Query
Response
дата и время
Query
Response

kqlDateTimeBinAt

Добавлено в: v26.8.0 Округляет значение даты и времени вниз до ближайшего кратного timespan, отсчитываемого от фиксированной точки даты и времени. Синтаксис
Аргументы
  • value — округляемые дата и время. - binSize — размер бина. - fixedPoint — фиксированная точка даты и времени.
Возвращаемое значение Округлённые дата и время. Примеры

kqlDivide

Добавлено в: v26.8.0 Деление в том виде, в каком его определяет Kusto Query Language: два целочисленных операнда делятся с целочисленным результатом, поэтому 7 / 2 даёт 3, а два операнда типа timespan (то есть значения Interval) делятся с вещественным результатом, поэтому 15ms / 10ms даёт 1.5. Любые другие сочетания типов операндов делятся так же, как в divide. Эта функция реализует оператор / при dialect = 'kusto'. Она не предназначена для прямого вызова из SQL. Синтаксис
Аргументы
  • x — делимое. - y — делитель.
Возвращаемое значение intDiv(x, y), если оба аргумента — целые числа; отношение тиков интервалов, если оба аргумента — интервалы; в остальных случаях — divide(x, y). Примеры целые числа
Query
Response
вещественные числа
Query
Response
timespans
Query
Response

kqlMultiply

Добавлено в: v26.8.0 Умножение в том виде, в каком его определяет Kusto Query Language: timespan (Interval) умножается на число, стоящее с любой стороны, поэтому 2 * 1h — это два часа. Два аргумента без интервала перемножаются так же, как в multiply. Эта функция реализует оператор * при dialect = 'kusto'. Она не предназначена для прямого вызова из SQL. Синтаксис
Аргументы
  • x — число или timespan. - y — число либо timespan, если x — число.
Возвращаемое значение Произведение; интервал того же типа, если один из аргументов является интервалом. Примеры timespan
Query
Response
числа
Query
Response

kqlRangeCount

Добавлено в: v26.8.0 Количество строк, которые возвращает источник range языка Kusto Query Language: floor((to - from) / step) + 1, но не меньше нуля. Границы и шаг задаются числами, либо значениями даты и времени с шагом в виде timespan (то есть Interval), либо значениями timespan; временные формы подсчитываются в целых наносекундах, что нельзя выразить одной операцией деления в ClickHouse. Целые числа и decimal-значения подсчитываются точно, а не через Float64. Эта функция обеспечивает работу источника range при dialect = 'kusto'. Её не предполагается вызывать напрямую из SQL. Синтаксис
Arguments
  • from — Первое значение диапазона. - to — Значение, за которое диапазон не выходит. - step — Разность между двумя соседними значениями.
Returned value Количество значений в диапазоне. Examples numbers
Query
Response
datetimes
Query
Response

lcm

Добавленный в: v1.1.0 Возвращает наименьшее общее кратное двух значений x и y. Генерируется исключение при делении на ноль или при делении минимального отрицательного числа на минус один. Синтаксис
Аргументы
  • x — Первое целое число. (U)Int*
  • y — Второе целое число. (U)Int*
Возвращаемое значение Возвращает наименьшее общее кратное чисел x и y. (U)Int* Примеры Пример использования
Query
Response

max2

Добавленный в: v21.11.0 Возвращает большее из двух числовых значений x и y. Синтаксис
Аргументы Возвращаемое значение Возвращает большее из значений x и y. Float64 Примеры Пример использования
Query
Response

midpoint

Добавленный в: v25.11.0 Вычисляет и возвращает среднее значение переданных аргументов. Поддерживает числовые и временные типы. Синтаксис
Аргументы
  • x1[, x2, ...] — Принимает одно или несколько значений для вычисления среднего.
Возвращаемое значение Возвращает среднее значение переданных аргументов с приведением к наибольшему совместимому типу. Примеры Числовые типы
Query
Response
Десятичные типы
Query
Response
Типы данных даты
Query
Response
Типы DateTime
Query
Response
Типы Time64
Query
Response

min2

Добавленный в: v21.11.0 Возвращает меньшее из двух числовых значений x и y. Синтаксис
Аргументы Возвращаемое значение Возвращает меньшее из значений x и y. Float64 Примеры Пример использования
Query
Response

minus

Добавленный в: v1.1.0 Вычисляет разность двух значений a и b. Результат всегда знаковый. Как и в случае с plus, из значения типа дата или дата и время можно вычитать целое число. Кроме того, поддерживается вычитание между значениями типа дата и время, в результате которого получается разница во времени между ними. Также можно вычесть Time или Time64 из DateTime или DateTime64; значение времени применяется как смещение в секундах. DateTime минус Time даёт DateTime, а любая комбинация с DateTime64 или Time64 даёт DateTime64 с максимальным масштабом из двух аргументов. Синтаксис
Аргументы
  • x — Уменьшаемое. - y — Вычитаемое.
Возвращаемое значение Разность x и y Примеры Вычитание двух чисел
Query
Response
Вычитание целого числа из даты
Query
Response

modulo

Добавленный в: v1.1.0 Вычисляет остаток от деления значения a на значение b. Тип результата — целое число, если оба входных значения целые. Если одно из входных значений — число с плавающей точкой, тип результата — Float64. Остаток вычисляется так же, как в C++. Для отрицательных чисел используется усечённое деление. При делении на ноль или при делении минимального отрицательного числа на минус единицу генерируется исключение. Синтаксис
Псевдонимы: mod Аргументы
  • a — Делимое - b — Делитель (модуль)
Возвращаемое значение Остаток от деления a на b Примеры Пример использования
Query
Response

moduloLegacy

Добавленный в: v1.1.0 Вычисляет остаток от деления. Это устаревшая реализация modulo, использующая оператор % из C++, который может возвращать отрицательные результаты для отрицательных аргументов. Эта функция существует для обратной совместимости со старой логикой партиционирования таблиц. Для стандартного поведения используйте modulo или positiveModulo. Синтаксис
Аргументы Возвращаемое значение Возвращает остаток от деления. (U)Int* или Float* Примеры Базовое использование
Query
Response

moduloOrNull

Добавленный в: v25.5.0 Вычисляет остаток при делении a на b. Аналогична функции modulo, но moduloOrNull возвращает NULL, если операция в противном случае привела бы к исключению с плавающей запятой. Для аргументов с плавающей точкой это происходит только в случае, если делитель равен 0; для целочисленных аргументов это также включает случай, когда минимальное отрицательное значение берется по модулю -1 (например, -128 % -1 для Int8). Синтаксис
Псевдонимы: modOrNull Аргументы Возвращаемое значение Возвращает остаток от деления x на y или NULL, если операция привела бы к исключению с плавающей запятой: когда делитель равен нулю или, для целочисленных аргументов, при вычислении минимального отрицательного значения по модулю -1. Примеры moduloOrNull при делении на ноль
Query
Response
moduloOrNull при делении минимального отрицательного целого числа на -1
Query
Response

moduloOrZero

Добавленный в: v20.3.0 Как modulo, но для целочисленных результатов возвращает ноль вместо исключения в тех случаях, когда операция иначе привела бы к исключению. Для результатов с плавающей запятой нулевой делитель даёт NaN. Синтаксис
Аргументы Возвращаемое значение Возвращает остаток от деления a % b. Для целочисленных результатов возвращает 0 в тех случаях, когда операция иначе сгенерировала бы исключение. Для результатов с плавающей запятой нулевой делитель даёт NaN. Примеры Нулевой целочисленный делитель
Query
Response
Нулевой делитель с плавающей запятой
Query
Response

multiply

Добавленный в: v1.1.0 Вычисляет произведение двух значений x и y. Синтаксис
Аргументы Возвращаемое значение Возвращает произведение x и y Примеры Умножение двух чисел
Query
Response

multiplyDecimal

Добавленный в: v22.12.0 Выполняет умножение двух десятичных чисел. Результирующее значение будет иметь тип Decimal256. Масштаб результата можно явно задать аргументом result_scale (константный Integer в диапазоне [0, 76]). Если он не указан, масштаб результата будет равен максимальному масштабу переданных аргументов.
Эти функции работают значительно медленнее, чем обычная multiply. Если вам не нужна контролируемая точность и/или важна высокая скорость вычислений, рассмотрите использование multiply
Синтаксис
Аргументы
  • a — Первое значение. Decimal
  • b — Второе значение. Decimal
  • result_scale — Масштаб результата. (U)Int*
Возвращаемое значение Результат умножения с указанным масштабом. Тип: Decimal256 Примеры Пример использования
Query
Response
Отличие от обычного умножения
Query
Response
Без переполнения при использовании multiplyDecimal
Query
Response
Переполнение типа Decimal при обычном умножении
Query
Response

negate

Добавленный в: v1.1.0 Меняет знак аргумента x на противоположный. Результат всегда знаковый. Синтаксис
Аргументы
  • x — Значение, знак которого нужно изменить на противоположный.
Возвращаемое значение Возвращает -x для значения x Примеры Пример использования
Query
Response

plus

Добавленный в: v1.1.0 Вычисляет сумму двух значений x и y. Псевдоним: x + y (оператор). Можно складывать целое число и дату или дату и время. В первом случае увеличивается число дней в дате, во втором — число секунд в дате и времени. Также можно складывать дату и время. При сложении Date и Time получается DateTime. При сложении Date и Time64, а также Date32 и Time или Time64, получается DateTime64. При сложении Time или Time64 с DateTime или DateTime64 значение времени применяется как смещение в секундах. DateTime плюс Time даёт DateTime, любая комбинация с участием DateTime64 или Time64 даёт DateTime64 с максимальной точностью (scale) из двух аргументов. Синтаксис
Аргументы
  • x — Левый операнд. - y — Правый операнд.
Возвращаемое значение Возвращает сумму x и y Примеры Сложение двух чисел
Query
Response
Прибавление целого числа к дате
Query
Response
Добавление даты и времени
Query
Response

positiveModulo

Добавленный в: v22.11.0 Вычисляет остаток от деления x на y. Аналогична функции modulo, но positiveModulo всегда возвращает неотрицательное число. Синтаксис
Псевдонимы: positive_modulo, pmod Аргументы Возвращаемое значение Возвращает разность между x и ближайшим к нему целым числом, которое не превышает x и делится на y. Примеры Пример использования
Query
Response

positiveModuloOrNull

Добавленный в: v25.5.0 Вычисляет остаток от деления a на b. Аналогична функции positiveModulo, но positiveModuloOrNull возвращает NULL, если операция в противном случае привела бы к исключению с плавающей запятой. Для аргументов с плавающей запятой это происходит только, когда делитель равен 0; для целочисленных аргументов сюда также относится минимальное отрицательное значение по модулю -1 (например, -128 % -1 для Int8). Синтаксис
Псевдонимы: positive_modulo_or_null, pmodOrNull Аргументы Возвращаемое значение Возвращает разность между x и ближайшим целым числом, не превышающим x и кратным y, или NULL, если операция привела бы к исключению с плавающей запятой: когда делитель равен нулю или, для целочисленных аргументов, при вычислении остатка от минимального отрицательного значения по модулю -1. Примеры positiveModuloOrNull при делении на ноль
Query
Response
positiveModuloOrNull для минимального отрицательного целого числа при делении на -1
Query
Response

sqr

Добавленный в: v26.7.0 Вычисляет квадрат значения x. Синтаксис
Аргументы
  • x — Значение, возводимое в квадрат. (U)Int* или Float*, или Decimal
Возвращаемое значение Возвращает произведение x на x. Примеры Возведение числа в квадрат
Query
Response
Последнее изменение 26 сентября 2026 г.