Перейти к основному содержанию
Приведённая ниже документация сгенерирована из системной таблицы system.functions

ceil

Добавленный в: v1.1.0 Как и floor, но возвращает наименьшее округлённое число, большее или равное x. Если округление приводит к переполнению (например, ceiling(255, -1)), результат не определён. Синтаксис
ceiling(x[, N])
Псевдонимы: ceiling Аргументы
  • x — Значение, которое нужно округлить. Float* или Decimal* или (U)Int*
  • N — Необязательно. Количество знаков после запятой, до которого нужно округлить. По умолчанию — ноль, то есть округление до целого числа. Может быть отрицательным. (U)Int*
Возвращаемое значение Округлённое число того же типа, что и x. Float* или Decimal* или (U)Int* Примеры Базовое использование
Query
SELECT ceiling(123.45, 1) AS rounded
Response
┌─rounded─┐
│   123.5 │
└─────────┘
Отрицательное значение точности
Query
SELECT ceiling(123.45, -1)
Response
┌─ceiling(123.45, -1)─┐
│                 130 │
└─────────────────────┘

floor

Добавленный в: v1.1.0 Возвращает наибольшее округлённое число, которое меньше или равно x, где округлённое число кратно 1 / 10 * N, либо ближайшее число соответствующего типа данных, если 1 / 10 * N не является точным значением. Целочисленные аргументы можно округлять с отрицательным аргументом N. При неотрицательном N функция возвращает x. Если округление вызывает переполнение (например, floor(-128, -1)), результат не определён. Синтаксис
floor(x[, N])
Аргументы
  • x — Значение для округления. Float* или Decimal* или (U)Int*
  • N — Необязательный параметр. Количество знаков после запятой, до которых выполняется округление. По умолчанию равно нулю, то есть число округляется до целого. Может быть отрицательным. (U)Int*
Возвращаемое значение Возвращает округлённое число того же типа, что и x. Float* или Decimal* или (U)Int* Примеры Пример использования
Query
SELECT floor(123.45, 1) AS rounded
Response
┌─rounded─┐
│   123.4 │
└─────────┘
Отрицательное значение точности
Query
SELECT floor(123.45, -1)
Response
┌─floor(123.45, -1)─┐
│               120 │
└───────────────────┘

round

Добавленный в: v1.1.0 Округляет значение до указанного числа десятичных знаков N.
  • Если N > 0, функция округляет вправо от десятичной точки.
  • Если N < 0, функция округляет влево от десятичной точки.
  • Если N = 0, функция округляет до ближайшего целого числа.
Функция возвращает ближайшее число указанного разряда. Если входное значение находится на одинаковом расстоянии от двух соседних чисел, функция использует банковское округление для значений типа Float* и округление в сторону от нуля для остальных числовых типов (Decimal*). Если округление приводит к переполнению (например, round(255, -1)), результат не определён. Синтаксис
round(x[, N])
Аргументы
  • x — Число для округления. Float* или Decimal* или (U)Int*
  • N — Необязательный параметр. Количество десятичных знаков, до которых выполняется округление. По умолчанию — 0. (U)Int*
Возвращаемое значение Возвращает округлённое число того же типа, что и x. Float* или Decimal* или (U)Int* Примеры Значения типа Float
Query
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;
Response
┌───x─┬─round(x)─┐
│   0 │        0 │
│ 0.5 │        0 │
│   1 │        1 │
└─────┴──────────┘
Десятичные значения на входе
Query
SELECT cast(number / 2 AS  Decimal(10,4)) AS x, round(x) FROM system.numbers LIMIT 3;
Response
┌───x─┬─round(x)─┐
│   0 │        0 │
│ 0.5 │        1 │
│   1 │        1 │
└─────┴──────────┘

roundAge

Добавленный в: v1.1.0 Принимает число, обозначающее возраст человека, сравнивает его со стандартными возрастными диапазонами и возвращает либо наибольшее, либо наименьшее значение диапазона, в который попадает это число.
  • Возвращает 0 для age < 1.
  • Возвращает 17 для 1 ≤ age ≤ 17.
  • Возвращает 18 для 18 ≤ age ≤ 24.
  • Возвращает 25 для 25 ≤ age ≤ 34.
  • Возвращает 35 для 35 ≤ age ≤ 44.
  • Возвращает 45 для 45 ≤ age ≤ 54.
  • Возвращает 55 для age ≥ 55.
Синтаксис
roundAge(num)
Аргументы
  • age — Число, обозначающее возраст в годах. (U)Int* или Float*
Возвращаемое значение Возвращает верхнюю или нижнюю границу диапазона, в который попадает age. UInt8 Примеры Пример использования
Query
SELECT *, roundAge(*) FROM system.numbers WHERE number IN (0, 5, 20, 31, 37, 54, 72);
Response
┌─number─┬─roundAge(number)─┐
│      0 │                0 │
│      5 │               17 │
│     20 │               18 │
│     31 │               25 │
│     37 │               35 │
│     54 │               45 │
│     72 │               55 │
└────────┴──────────────────┘

roundBankers

Добавленный в: v20.1.0 Округляет число до указанного десятичного разряда N. Если округляемое число находится ровно посередине между двумя числами, функция использует метод округления, называемый банковским округлением. Это метод округления по умолчанию для чисел с плавающей точкой в IEEE 754.
  • Если N > 0, функция округляет вправо от десятичной точки
  • Если N < 0, функция округляет влево от десятичной точки
  • Если N = 0, функция округляет до ближайшего целого числа
Примечания
  • Если округляемое число находится ровно посередине между двумя числами, оно округляется до ближайшей чётной цифры в указанном десятичном разряде. Например: 3.5 округляется вверх до 4, а 2.5 — вниз до 2.
  • Функция round выполняет такое же округление для чисел с плавающей точкой.
  • Функция roundBankers также округляет целые числа таким же образом, например, roundBankers(45, -1) = 40.
  • В остальных случаях функция округляет числа до ближайшего целого.
Используйте банковское округление при сложении или вычитании чиселБанковское округление позволяет уменьшить влияние округления на результаты сложения или вычитания чисел.Например, просуммируем числа 1.5, 2.5, 3.5, 4.5 с разными способами округления:
  • Без округления: 1.5 + 2.5 + 3.5 + 4.5 = 12.
  • Банковское округление: 2 + 2 + 4 + 4 = 12.
  • Округление до ближайшего целого: 2 + 3 + 4 + 5 = 14.
Синтаксис
roundBankers(x[, N])
Аргументы
  • x — Число, которое нужно округлить. (U)Int* или Decimal* или Float*
  • [, N] — Необязательный параметр. Количество десятичных знаков, до которых выполняется округление. По умолчанию — 0. (U)Int*
Возвращаемое значение Возвращает значение, округлённое по методу банковского округления. (U)Int* или Decimal* или Float* или Float* Примеры базовое использование
Query
SELECT number / 2 AS x, roundBankers(x, 0) AS b FROM system.numbers LIMIT 10
Response
┌───x─┬─b─┐
│   0 │ 0 │
│ 0.5 │ 0 │
│   1 │ 1 │
│ 1.5 │ 2 │
│   2 │ 2 │
│ 2.5 │ 2 │
│   3 │ 3 │
│ 3.5 │ 4 │
│   4 │ 4 │
│ 4.5 │ 4 │
└─────┴───┘

roundDown

Добавленный в: v20.1.0 Округляет число вниз до значения из указанного массива. Если значение меньше нижней границы, возвращается нижняя граница. Синтаксис
roundDown(num, arr)
Аргументы
  • num — Число, которое нужно округлить вниз. (U)Int* или Decimal* или Float*
  • arr — Массив элементов, до одного из которых округляется вниз число num. Array((U)Int*) или Array(Float*)
Возвращаемое значение Возвращает число, округлённое вниз до одного из элементов в arr. Если значение меньше наименьшей границы, возвращается наименьшая граница. (U)Int* или Float* Примеры Пример использования
Query
SELECT *, roundDown(*, [3, 4, 5]) FROM system.numbers WHERE number IN (0, 1, 2, 3, 4, 5)
Response
┌─number─┬─roundDown(number, [3, 4, 5])─┐
│      0 │                            3 │
│      1 │                            3 │
│      2 │                            3 │
│      3 │                            3 │
│      4 │                            4 │
│      5 │                            5 │
└────────┴──────────────────────────────┘

roundDuration

Добавленный в: v1.1.0 Округляет число вниз до ближайшего значения из набора часто используемых интервалов времени: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. Если число меньше единицы, возвращает 0. Синтаксис
roundDuration(num)
Аргументы
  • num — число, которое нужно округлить до одного из чисел из набора стандартных длительностей. (U)Int* или Float*
Возвращаемое значение Возвращает 0 при num < 1. В противном случае — одно из следующих значений: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. UInt16 Примеры Пример использования
Query
SELECT *, roundDuration(*) FROM system.numbers WHERE number IN (0, 9, 19, 47, 101, 149, 205, 271, 421, 789, 1423, 2345, 4567, 9876, 24680, 42573)
Response
┌─number─┬─roundDuration(number)─┐
│      0 │                     0 │
│      9 │                     1 │
│     19 │                    10 │
│     47 │                    30 │
│    101 │                    60 │
│    149 │                   120 │
│    205 │                   180 │
│    271 │                   240 │
│    421 │                   300 │
│    789 │                   600 │
│   1423 │                  1200 │
│   2345 │                  1800 │
│   4567 │                  3600 │
│   9876 │                  7200 │
│  24680 │                 18000 │
│  42573 │                 36000 │
└────────┴───────────────────────┘

roundToExp2

Добавленный в: v1.1.0 Округляет число вниз до ближайшей степени двойки (целой неотрицательной). Если число меньше единицы, возвращает 0. Синтаксис
roundToExp2(num)
Аргументы
  • num — число, которое нужно округлить. (U)Int* или Float*
Возвращаемое значение Возвращает num, округлённое вниз до ближайшей меньшей (целой неотрицательной) степени двойки; для num < 1 возвращается 0. (U)Int* или Float* Примеры Пример использования
Query
SELECT *, roundToExp2(*) FROM system.numbers WHERE number IN (0, 2, 5, 10, 19, 50)
Response
┌─number─┬─roundToExp2(number)─┐
│      0 │                   0 │
│      2 │                   2 │
│      5 │                   4 │
│     10 │                   8 │
│     19 │                  16 │
│     50 │                  32 │
└────────┴─────────────────────┘

trunc

Добавленный в: v1.1.0 Подобно floor, но возвращает округлённое число с наибольшим модулем, не превышающим модуль x. Синтаксис
truncate(x[, N])
Псевдонимы: truncate Аргументы
  • x — Значение, которое нужно округлить. Float* или Decimal* или (U)Int*
  • N — Необязательный параметр. Количество знаков после запятой, до которых выполняется округление. По умолчанию — 0, то есть округление до целого числа. (U)Int*
Возвращаемое значение Возвращает округлённое число того же типа, что и x. Float* или Decimal* или (U)Int* Примеры Базовое использование
Query
SELECT truncate(123.499, 1) AS res;
Response
┌───res─┐
│ 123.4 │
└───────┘
Последнее изменение 10 июня 2026 г.