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*
Примеры
Базовое использование
SELECT ceiling(123.45, 1) AS rounded┌─rounded─┐
│ 123.5 │
└─────────┘Отрицательное значение точности
SELECT ceiling(123.45, -1)┌─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*
Примеры
Пример использования
SELECT floor(123.45, 1) AS rounded┌─rounded─┐
│ 123.4 │
└─────────┘Отрицательное значение точности
SELECT floor(123.45, -1)┌─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
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;┌───x─┬─round(x)─┐
│ 0 │ 0 │
│ 0.5 │ 0 │
│ 1 │ 1 │
└─────┴──────────┘Десятичные значения на входе
SELECT cast(number / 2 AS Decimal(10,4)) AS x, round(x) FROM system.numbers LIMIT 3;┌───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. UInt8
Примеры
Пример использования
SELECT *, roundAge(*) FROM system.numbers WHERE number IN (0, 5, 20, 31, 37, 54, 72);┌─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, функция округляет до ближайшего целого числа
Синтаксис
roundBankers(x[, N])Аргументы
x— Число, которое нужно округлить.(U)Int*илиDecimal*илиFloat*[, N]— Необязательный параметр. Количество десятичных знаков, до которых выполняется округление. По умолчанию —0.(U)Int*
Возвращаемое значение
Возвращает значение, округлённое по методу банковского округления. (U)Int* или Decimal* или Float*
Примеры
базовое использование
SELECT number / 2 AS x, roundBankers(x, 0) AS b FROM system.numbers LIMIT 10┌───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*
Примеры
Пример использования
SELECT *, roundDown(*, [3, 4, 5]) FROM system.numbers WHERE number IN (0, 1, 2, 3, 4, 5)┌─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
Примеры
Пример использования
SELECT *, roundDuration(*) FROM system.numbers WHERE number IN (0, 9, 19, 47, 101, 149, 205, 271, 421, 789, 1423, 2345, 4567, 9876, 24680, 42573)┌─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, округлённое вниз до ближайшей меньшей (целой неотрицательной) степени двойки; для num < 1 возвращается 0. (U)Int* или Float*
Примеры
Пример использования
SELECT *, roundToExp2(*) FROM system.numbers WHERE number IN (0, 2, 5, 10, 19, 50)┌─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*
Примеры
Базовое использование
SELECT truncate(123.499, 1) AS res;┌───res─┐
│ 123.4 │
└───────┘