mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-14 11:33:46 +00:00
2d2bc052e1
* Typo fix. * Links fix. * Fixed links in docs. * More fixes. * docs/en: cleaning some files * docs/en: cleaning data_types * docs/en: cleaning database_engines * docs/en: cleaning development * docs/en: cleaning getting_started * docs/en: cleaning interfaces * docs/en: cleaning operations * docs/en: cleaning query_lamguage * docs/en: cleaning en * docs/ru: cleaning data_types * docs/ru: cleaning index * docs/ru: cleaning database_engines * docs/ru: cleaning development * docs/ru: cleaning general * docs/ru: cleaning getting_started * docs/ru: cleaning interfaces * docs/ru: cleaning operations * docs/ru: cleaning query_language * docs: cleaning interfaces/http * Update docs/en/data_types/array.md decorated ``` Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/getting_started/example_datasets/nyc_taxi.md fixed typo Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/getting_started/example_datasets/ontime.md fixed typo Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/interfaces/formats.md fixed error Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/table_engines/custom_partitioning_key.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/utils/clickhouse-local.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/dicts/external_dicts_dict_sources.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/utils/clickhouse-local.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/json_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/json_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/other_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/other_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/date_time_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/table_engines/jdbc.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * docs: fixed error * docs: fixed error
76 lines
5.5 KiB
Markdown
76 lines
5.5 KiB
Markdown
# Арифметические функции
|
||
|
||
Для всех арифметических функций, тип результата вычисляется, как минимальный числовой тип, который может вместить результат, если такой тип есть. Минимум берётся одновременно по числу бит, знаковости и "плавучести". Если бит не хватает, то берётся тип максимальной битности.
|
||
|
||
Пример:
|
||
|
||
```sql
|
||
SELECT toTypeName(0), toTypeName(0 + 0), toTypeName(0 + 0 + 0), toTypeName(0 + 0 + 0 + 0)
|
||
```
|
||
|
||
```text
|
||
┌─toTypeName(0)─┬─toTypeName(plus(0, 0))─┬─toTypeName(plus(plus(0, 0), 0))─┬─toTypeName(plus(plus(plus(0, 0), 0), 0))─┐
|
||
│ UInt8 │ UInt16 │ UInt32 │ UInt64 │
|
||
└───────────────┴────────────────────────┴─────────────────────────────────┴──────────────────────────────────────────┘
|
||
```
|
||
|
||
Арифметические функции работают для любой пары типов из UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32, Float64.
|
||
|
||
Переполнение производится также, как в C++.
|
||
|
||
## plus(a, b), оператор a + b
|
||
|
||
Вычисляет сумму чисел.
|
||
Также можно складывать целые числа с датой и датой-с-временем. В случае даты, прибавление целого числа означает прибавление соответствующего количества дней. В случае даты-с-временем - прибавление соответствующего количества секунд.
|
||
|
||
## minus(a, b), оператор a - b
|
||
|
||
Вычисляет разность чисел. Результат всегда имеет знаковый тип.
|
||
|
||
Также можно вычитать целые числа из даты и даты-с-временем. Смысл аналогичен - смотрите выше для plus.
|
||
|
||
## multiply(a, b), оператор a \* b
|
||
|
||
Вычисляет произведение чисел.
|
||
|
||
## divide(a, b), оператор a / b
|
||
|
||
Вычисляет частное чисел. Тип результата всегда является типом с плавающей запятой.
|
||
То есть, деление не целочисленное. Для целочисленного деления, используйте функцию intDiv.
|
||
При делении на ноль получится inf, -inf или nan.
|
||
|
||
## intDiv(a, b)
|
||
|
||
Вычисляет частное чисел. Деление целочисленное, с округлением вниз (по абсолютному значению).
|
||
При делении на ноль или при делении минимального отрицательного числа на минус единицу, кидается исключение.
|
||
|
||
## intDivOrZero(a, b)
|
||
|
||
Отличается от intDiv тем, что при делении на ноль или при делении минимального отрицательного числа на минус единицу, возвращается ноль.
|
||
|
||
## modulo(a, b), оператор a % b
|
||
|
||
Вычисляет остаток от деления.
|
||
Если аргументы - числа с плавающей запятой, то они предварительно преобразуются в целые числа, путём отбрасывания дробной части.
|
||
Берётся остаток в том же смысле, как это делается в C++. По факту, для отрицательных чисел, используется truncated division.
|
||
При делении на ноль или при делении минимального отрицательного числа на минус единицу, кидается исключение.
|
||
|
||
## negate(a), оператор -a
|
||
|
||
Вычисляет число, обратное по знаку. Результат всегда имеет знаковый тип.
|
||
|
||
## abs(a) {#arithm_func-abs}
|
||
|
||
Вычисляет абсолютное значение для числа a. То есть, если a < 0, то возвращает -a.
|
||
Для беззнаковых типов ничего не делает. Для чисел типа целых со знаком, возвращает число беззнакового типа.
|
||
|
||
## gcd(a, b)
|
||
Вычисляет наибольший общий делитель чисел.
|
||
При делении на ноль или при делении минимального отрицательного числа на минус единицу, кидается исключение.
|
||
|
||
## lcm(a, b)
|
||
Вычисляет наименьшее общее кратное чисел.
|
||
При делении на ноль или при делении минимального отрицательного числа на минус единицу, кидается исключение.
|
||
|
||
[Оригинальная статья](https://clickhouse.yandex/docs/ru/query_language/functions/arithmetic_functions/) <!--hide-->
|