跳到主要内容
版本:0.2.x

Arithmetic

Notice: Some of the examples below are referenced from ClickHouse Documentation but have been adapted and modified to work in ByConity.

abs​

Calculates the absolute value of the number (a). That is, if a \< 0, it returns -a. For unsigned types it does not do anything. For signed integer types, it returns an unsigned number.

Syntax

abs(x)

Arguments

  • x – The number.

Returned value

  • The absolute value of the number.

Example

SELECT abs(-2);

Result:

┌─abs(-2)─┐
│ 2 │
└─────────┘

divide​

Calculates the quotient of the numbers. The result type is always a floating-point type.

It is not integer division. For integer division, use the ‘intDiv’ function.

When dividing by zero you get ‘inf’, ‘-inf’, or ‘nan’.

Syntax


divide(a, b) # a / b operator

Arguments

  • a – The number.
  • b – The number.

Returned value

  • Value in floating-point type

Example

SELECT divide(50, 2);

Result:

┌─divide(50, 2)─┐
│ 2.5e+01 │
└───────────────┘

gcd​

Returns the greatest common divisor of the numbers.

An exception is thrown when dividing by zero or when dividing a minimal negative number by minus one.

Syntax

gcd(a, b)

Arguments

  • a – The number.
  • b – The number.

Returned value

  • The greatest common divisor of the numbers

Example

SELECT gcd(27,18);

Result:

┌─gcd(27, 18)─┐
│ 9 │
└─────────────┘

intDiv​

Calculates the quotient of the numbers. Divides into integers, rounding down (by the absolute value).

An exception is thrown when dividing by zero or when dividing a minimal negative number by minus one.

Syntax

intDiv(a, b)

Arguments

  • a – The number.
  • b – The number.

Returned value

  • Quotient of the numbers in integer

Example

SELECT intDiv(10, 2);

Result:

┌─intDiv(10, 2)─┐
│ 5 │
└───────────────┘

intDivOrZero​

Differs from ‘intDiv’ in that it returns zero when dividing by zero or when dividing a minimal negative number by minus one.

Syntax

intDivOrZero(a, b)

Arguments

  • a – The number.
  • b – The number.

Returned value

  • Quotient of the numbers in integer

Example

SELECT intDivOrZero(10, -2);

Result:

┌─intDivOrZero(10, -2)─┐
│ -5 │
└──────────────────────┘

lcm​

Returns the least common multiple of the numbers.

An exception is thrown when dividing by zero or when dividing a minimal negative number by minus one.

Syntax

lcm(a, b)

Arguments

  • a – The number.
  • b – The number.

Returned value

  • The least greatest common divisor of the numbers

Example

SELECT lcm(27,18);

Result:

┌─lcm(27, 18)─┐
│ 54 │
└─────────────┘

min​

Aggregate function that calculates the minimum across a group of values.

Syntax

min(column)

Arguments

  • column – The column name.

Returned value

  • The minimum number in group of values

Example

CREATE TABLE test.test_min(id Int32) ENGINE = CnchMergeTree ORDER BY id;
INSERT INTO test.test_min(id) VALUES(1),(2),(3),(4),(5); -- insert 1,2,3,4,5 to table
SELECT min(id) FROM test.test_min;

Result:

┌─min(id)─┐
│ 1 │
└─────────┘

minus​

Calculates the difference. The result is always signed.

You can also calculate integer numbers from a date or date with time. The idea is the same – see above for ‘plus’.

Syntax

minus(a, b), a - b operator

Arguments

  • a – The number.
  • b – The number.

Returned value

  • The difference between a and b.

Example

SELECT minus(10, 3);

Result:

┌─minus(10, 3)─┐
│ 7 │
└──────────────┘

modulo​

Calculates the remainder after division.

If arguments are floating-point numbers, they are pre-converted to integers by dropping the decimal portion.

The remainder is taken in the same sense as in C++. Truncated division is used for negative numbers.

An exception is thrown when dividing by zero or when dividing a minimal negative number by minus one.

Syntax

modulo(a, b), a % b operator

Arguments

  • a – The number.
  • b – The number.

Returned value

  • The remainder from a divide by b.

Example

SELECT modulo(10, 3);

Result:

┌─modulo(10, 3)─┐
│ 1 │
└───────────────┘

multiply​

Calculates the product of the numbers.

Syntax

multiply(a, b) # a * b operator

Arguments

  • a – The number.
  • b – The number.

Returned value

  • Product value of the numbers.

Example

SELECT multiply(3,12);

Result:

┌─multiply(3, 12)─┐
│ 36 │
└─────────────────┘

negate​

Calculates a number with the reverse sign. The result is always signed.

Syntax

negate(a) # -a operator

Arguments

  • a – The number.

Returned value

  • The number with the reverse sign.

Example

SELECT negate(20);

Result:

┌─negate(20)─┐
│ -20 │
└────────────┘

plus​

Calculates the sum of the numbers.

You can also add integer numbers with a date or date and time. In the case of a date, adding an integer means adding the corresponding number of days. For a date with time, it means adding the corresponding number of seconds.

Syntax

select plus(a, b) # a + b operator

Arguments

  • a – The number.
  • b – The number.

Returned value

  • The sum of the numbers.

Example

select plus(1,2);

Result:

┌─plus(1, 2)─┐
│ 3 │
└────────────┘