Descripción general
Las funciones aritméticas se aplican a cualquier par de operandos de tipoUInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32 o Float64.
Antes de realizar la operación, ambos operandos se convierten al tipo de resultado. El tipo de resultado se determina de la siguiente manera (a menos que se especifique
lo contrario en la documentación de la función que aparece a continuación):
- Si ambos operandos tienen hasta 32 bits, el tamaño del tipo de resultado será el del siguiente tipo de mayor tamaño después del mayor de los
dos operandos (promoción de tamaño de enteros). Por ejemplo,
UInt8 + UInt16 = UInt32oFloat32 * Float32 = Float64. - Si uno de los operandos tiene 64 bits o más, el tamaño del tipo de resultado será el mismo que el del mayor de los dos operandos. Por
ejemplo,
UInt32 + UInt128 = UInt128oFloat32 * Float64 = Float64. - Si uno de los operandos es con signo, el tipo de resultado también será con signo; en caso contrario, será sin signo. Por ejemplo,
UInt32 * Int32 = Int64oUInt32 * UInt32 = UInt64.
abs
Introducido en: v1.1.0 Calcula el valor absoluto dex. No tiene efecto si x es de tipo sin signo. Si x es de tipo con signo, devuelve un número sin signo.
Sintaxis
x— Valor del que se obtiene el valor absoluto
x
Ejemplos
Ejemplo de uso
Query
Response
avg2
Introducido en: v25.11.0 Calcula y devuelve el valor medio de los argumentos proporcionados. Admite tipos numéricos y temporales. Sintaxisx1, x2]— Acepta dos valores para promediarlos.
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
byteSwap
Introducido en: v23.10.0 Invierte los bytes de un entero, es decir, cambia su endianness. El ejemplo siguiente puede desglosarse de la siguiente manera:- Convierta el entero en base 10 a su formato hexadecimal equivalente en orden big-endian; es decir, 3351772109 -> C7 C7 FB CD (4 bytes)
- Invierta los bytes; es decir, C7 C7 FB CD -> CD FB C7 C7
- Convierta el resultado de nuevo en un entero asumiendo el orden big-endian; es decir, CD FB C7 C7 -> 3455829959 Un caso de uso de esta función es invertir direcciones IPv4:
x— Un valor entero.(U)Int*
x con los bytes en orden inverso. (U)Int*
Ejemplos
Ejemplo de uso
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
divide
Introducido en: v1.1.0 Calcula el cociente de dos valores,a y b. El tipo de resultado siempre es Float64.
La función intDiv proporciona la división entera.
La división por
0 devuelve inf, -inf o nan.x— Dividendo -y— Divisor
Query
Response
Query
Response
divideDecimal
Introducido en: v22.12.0 Realiza la división de dos números decimales. El valor resultante será de tipo Decimal256. La escala del resultado puede especificarse explícitamente mediante el argumentoresult_scale (un Integer constante en el rango [0, 76]). Si no se especifica, la escala del resultado será la escala máxima de los argumentos proporcionados.
Esta función es significativamente más lenta que
divide.
Si realmente no necesita precisión controlada y/o necesita un cálculo rápido, considere usar divide.x— Primer valor: Decimal. -y— Segundo valor: Decimal. -result_scale— Escala del resultado. Tipo Int/UInt.
Decimal256
Ejemplos
Ejemplo 1
Query
Response
Query
Response
divideOrNull
Introducido en: v25.5.0 Igual quedivide, pero devuelve NULL cuando se divide entre cero.
Sintaxis
x— Dividendo -y— Divisor
Query
Response
gcd
Introducido en: v1.1.0 Devuelve el máximo común divisor de dos valores, a y b. Se produce una excepción al dividir por cero o al dividir el número negativo mínimo entre menos uno. Sintaxisx— Primer número entero -y— Segundo número entero
x y y.
Ejemplos
Ejemplo de uso
Query
Response
ifNotFinite
Introducido en: v20.3.0 Comprueba si un valor de punto flotante es finito. Puede obtener un resultado similar utilizando el operador ternario:isFinite(x) ? x : y.
Sintaxis
xsixes finito.ysixno es finito.
Query
Response
intDiv
Introducido en: v1.1.0 Realiza una división entera de dos valores,x entre y. En otras palabras,
calcula el cociente redondeado hacia abajo al entero inferior más próximo.
El resultado tiene el mismo tamaño que el dividendo (el primer parámetro).
Se lanza una excepción al dividir por cero, cuando el cociente no cabe
en el rango del dividendo o al dividir el número negativo mínimo entre menos uno.
Sintaxis
x— Operando izquierdo. -y— Operando derecho.
x e y
Ejemplos
División entera de dos números de punto flotante
Query
Response
Query
Response
intDivOrNull
Introducido en: v25.5.0 Igual queintDiv, pero devuelve NULL al dividir por cero o al dividir el
número negativo mínimo entre menos uno.
Sintaxis
x e y, o NULL.
Ejemplos
División entera entre cero
Query
Response
Query
Response
intDivOrZero
Introducido en: v1.1.0 Igual queintDiv, pero devuelve cero al dividir por cero o al dividir el
número negativo mínimo entre menos uno.
Sintaxis
Query
Response
Query
Response
isFinite
Introducido en: v1.1.0 Devuelve1 si el argumento Float32 o Float64, o BFloat16 no es infinito ni es NaN;
de lo contrario, esta función devuelve 0.
Sintaxis
1 si x no es infinito ni NaN; en caso contrario, 0.
Ejemplos
Comprobar si un número es finito
Query
Response
isInfinite
Introducido en: v1.1.0 Devuelve1 si el argumento de tipo Float32 o Float64, o BFloat16 es infinito; en caso contrario, esta función devuelve 0.
Tenga en cuenta que también se devuelve 0 para un NaN.
Sintaxis
1 si x es infinito; de lo contrario, 0 (también para NaN).
Ejemplos
Comprobar si un número es infinito
Query
Response
isNaN
Introducido en: v1.1.0 Devuelve1 si el argumento de tipo Float32 o Float64, o BFloat16, es NaN; de lo contrario, devuelve 0.
Sintaxis
1 si es NaN; de lo contrario, 0
Ejemplos
Ejemplo de uso
Query
Response
kqlBin
Introducido en: v26.8.0 Redondea un valor hacia abajo hasta un múltiplo deroundTo, como lo hace bin() de Kusto Query Language.
La regla depende de los tipos de los argumentos: un número se redondea aritméticamente, un intervalo de tiempo (que
es un Interval) se redondea a un intervalo de tiempo y un DateTime se redondea a un intervalo de tiempo. Un DateTime de KQL
es un DateTime64; los tipos portadores más restringidos, DateTime y Date, se rechazan porque
no pueden representar todos los bins que puede producir un DateTime de KQL.
Esta función implementa bin() cuando dialect = 'kusto'. No está pensada para invocarse directamente
desde SQL.
Sintaxis
value— Un número, un intervalo de tiempo o un DateTime (unDateTime64). -roundTo— El tamaño del bin.
value redondeado hacia abajo al múltiplo de roundTo más cercano.
Ejemplos
número
Query
Response
Query
Response
Query
Response
kqlBinAt
Disponible desde: v26.8.0 Redondea un valor hacia abajo hasta un múltiplo debinSize contado desde fixedPoint, como hace
bin_at() de Kusto Query Language. Los bins pueden alinearse antes o después del punto fijo.
La regla depende de los tipos de los argumentos: un número se redondea aritméticamente; un intervalo de tiempo (que
es un Interval) se redondea mediante un intervalo de tiempo respecto a otro intervalo de tiempo, y un DateTime se redondea mediante un
intervalo de tiempo contado desde un punto fijo de DateTime. Un DateTime de KQL es un DateTime64; los tipos más restringidos
DateTime y Date se rechazan, ya que no pueden representar todos los bins que puede
producir un DateTime de KQL.
Esta función implementa bin_at() cuando dialect = 'kusto'. No está pensada para llamarse directamente
desde SQL.
Sintaxis
value— Un número, un intervalo de tiempo o un DateTime (unDateTime64). -binSize— El tamaño del intervalo. -fixedPoint— El punto a partir del cual se cuentan los intervalos.
value redondeado hacia abajo al múltiplo de binSize más cercano, a partir de fixedPoint.
Ejemplos
número
Query
Response
Query
Response
kqlDateTimeBinAt
Introducido en: v26.8.0 Redondea un DateTime hacia abajo al múltiplo de intervalo de tiempo contado desde un punto fijo DateTime. Sintaxisvalue— El DateTime que se redondeará. -binSize— El tamaño del intervalo de tiempo. -fixedPoint— El punto fijo de DateTime.
kqlDivide
Introducido en: v26.8.0 División tal como la define Kusto Query Language: dos operandos enteros dan como resultado un entero, por lo que7 / 2 es 3, y dos operandos intervalo de tiempo (que son valores Interval) dan como resultado
su cociente de valor real, por lo que 15ms / 10ms es 1.5. Cualquier otra combinación de tipos de operandos se divide
como divide.
Esta función implementa el operador / cuando dialect = 'kusto'. No está pensada para invocarse
directamente desde SQL.
Sintaxis
x— El dividendo. -y— El divisor.
intDiv(x, y) si ambos argumentos son enteros; la razón entre los ticks de los intervalos si ambos son intervalos; divide(x, y) en caso contrario.
Ejemplos
enteros
Query
Response
Query
Response
Query
Response
kqlMultiply
Introducido en: v26.8.0 Multiplicación tal como la define Kusto Query Language: un intervalo de tiempo (unInterval) se multiplica por un número a cualquiera de los lados, por lo que 2 * 1h equivale a dos horas. Dos argumentos sin un intervalo se multiplican como lo hace multiply.
Esta función implementa el operador * cuando dialect = 'kusto'. No está pensada para invocarse directamente desde SQL.
Sintaxis
x— Un número o un intervalo de tiempo. -y— Un número o un intervalo de tiempo sixes un número.
Query
Response
Query
Response
kqlRangeCount
Introducida en: v26.8.0 El número de filas que genera la fuenterange de Kusto Query Language: floor((to - from) / step) + 1, y nunca inferior a cero. Los límites y el paso pueden ser números, valores de fecha y hora
incrementados mediante un intervalo de tiempo (un Interval) o intervalos de tiempo; las formas temporales se cuentan en
nanosegundos enteros, algo que no puede expresarse con una única división de ClickHouse. Los enteros y los decimales se cuentan
de forma exacta, no mediante Float64.
Esta función respalda la fuente range cuando dialect = 'kusto'. No está diseñada para invocarse
directamente desde SQL.
Sintaxis
from— El primer valor del rango. -to— El valor que el rango no supera. -step— La diferencia entre dos valores consecutivos.
Query
Response
Query
Response
lcm
Introducido en: v1.1.0 Devuelve el mínimo común múltiplo de dos valoresx e y.
Se produce una excepción al dividir por cero o al dividir el número negativo mínimo entre menos uno.
Sintaxis
x e y. (U)Int*
Ejemplos
Ejemplo de uso
Query
Response
max2
Introducida en: v21.11.0 Devuelve el valor mayor de dos valores numéricosx e y.
Sintaxis
x— Primer valor(U)Int8/16/32/64oFloat*oBFloat16oDecimaly— Segundo valor(U)Int8/16/32/64oFloat*oBFloat16oDecimal
x e y. Float64
Ejemplos
Ejemplo de uso
Query
Response
midpoint
Introducido en: v25.11.0 Calcula y devuelve el valor medio de los argumentos proporcionados. Admite tipos numéricos y temporales. Sintaxisx1[, x2, ...]— Acepta un solo valor o varios para calcular el promedio.
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
min2
Introducido en: v21.11.0 Devuelve el más pequeño de dos valores numéricos,x e y.
Sintaxis
x— Primer valor(U)Int8/16/32/64oFloat*oBFloat16oDecimaly— Segundo valor(U)Int8/16/32/64oFloat*oBFloat16oDecimal
x e y. Float64
Ejemplos
Ejemplo de uso
Query
Response
minus
Introducido en: v1.1.0 Calcula la diferencia entre dos valores,a y b. El resultado siempre tiene signo.
Al igual que con plus, es posible restar un entero de una fecha o de una fecha con hora.
Además, se admite la resta entre fechas con hora, lo que da como resultado la diferencia de tiempo entre ambas.
También es posible restar un Time o Time64 de un DateTime o DateTime64;
el valor de tiempo se aplica como un desplazamiento en segundos. DateTime menos Time produce
un DateTime; cualquier combinación que incluya DateTime64 o Time64 produce un DateTime64
con la escala máxima de los dos argumentos.
Sintaxis
x— Minuendo. -y— Sustraendo.
Query
Response
Query
Response
modulo
Introducido en: v1.1.0 Calcula el resto de la división de dos valores, a entre b. El tipo de resultado es un entero si ambas entradas son enteras. Si una de las entradas es un número de coma flotante, el tipo de resultado es Float64. El resto se calcula igual que en C++. Para los números negativos, se usa la división truncada. Se genera una excepción al dividir por cero o al dividir el número negativo mínimo entre menos uno. Sintaxismod
Argumentos
a— El dividendo -b— El divisor (módulo)
Query
Response
moduloLegacy
Introducido en: v1.1.0 Calcula el resto de una división. Esta es la implementación heredada de módulo que usa el operador% de C++, que puede producir resultados negativos con argumentos negativos. Esta función existe por compatibilidad retroactiva con la lógica antigua de particionado de tablas. Utilice modulo o positiveModulo para el comportamiento estándar.
Sintaxis
(U)Int* o Float*
Ejemplos
Uso básico
Query
Response
moduloOrNull
Introducido en: v25.5.0 Calcula el resto de dividira entre b. Es similar a la función modulo, excepto que moduloOrNull devuelve NULL
cuando, de otro modo, la operación produciría una excepción de coma flotante. En el caso de argumentos de coma flotante, esto ocurre solo cuando el
divisor es 0; para argumentos enteros, además cubre el caso del valor negativo mínimo módulo -1 (por ejemplo, -128 % -1 para Int8).
Sintaxis
modOrNull
Argumentos
Valor devuelto
Devuelve el resto de la división de x entre y, o NULL cuando la operación produciría una excepción de coma flotante:
cuando el divisor es cero o, en el caso de argumentos enteros, al calcular el valor negativo mínimo módulo -1.
Ejemplos
moduloOrNull con cero
Query
Response
Query
Response
moduloOrZero
Introducido en: v20.3.0 Comomodulo, pero devuelve cero en lugar de una excepción para resultados enteros cuando la operación generaría una
excepción. Para resultados de coma flotante, un divisor cero produce NaN.
Sintaxis
a % b. Para resultados enteros, devuelve 0 en los casos en que la operación generaría una excepción.
Para resultados de coma flotante, un divisor cero produce NaN.
Ejemplos
Divisor cero entero
Query
Response
Query
Response
multiply
Introducido en: v1.1.0 Calcula el producto de dos valoresx y y.
Sintaxis
Query
Response
multiplyDecimal
Introducido en: v22.12.0 Realiza la multiplicación de dos valores decimales. El valor resultante será de tipo Decimal256. La escala del resultado puede especificarse explícitamente mediante el argumentoresult_scale (Integer constante en el rango [0, 76]). Si no se especifica, la escala del resultado será la escala máxima de los argumentos proporcionados.
Estas funciones son considerablemente más lentas que
multiply.
Si realmente no necesita precisión controlada o necesita un cálculo rápido, considere usar multiplyDecimal256
Ejemplos
Ejemplo de uso
Query
Response
Query
Response
Query
Response
Query
Response
negate
Introducido en: v1.1.0 Devuelve el valor negado del argumentox. El resultado siempre es con signo.
Sintaxis
x— El valor que se va a negar.
Query
Response
plus
Introducido en: v1.1.0 Calcula la suma de dos valoresx e y. Alias: x + y (operador).
Es posible sumar un entero y una fecha o una fecha con hora. La primera
operación aumenta el número de días de la fecha; la segunda
aumenta el número de segundos de la fecha con hora.
También es posible sumar una fecha y una hora. Sumar un Date y un Time
produce un DateTime. Sumar un Date y un Time64, o un Date32 y
un Time o Time64, produce un DateTime64.
Sumar un Time o Time64 a un DateTime o DateTime64 aplica el valor de tiempo
como un desplazamiento en segundos. DateTime más Time produce un DateTime;
cualquier combinación que incluya DateTime64 o Time64 produce un DateTime64
con la escala máxima de los dos argumentos.
Sintaxis
x— operando izquierdo. -y— operando derecho.
Query
Response
Query
Response
Query
Response
positiveModulo
Introducido en: v22.11.0 Calcula el resto de dividirx entre y. Es similar a la función
modulo, salvo que positiveModulo siempre devuelve un número no negativo.
Sintaxis
positive_modulo, pmod
Argumentos
Valor devuelto
Devuelve la diferencia entre x y el entero más cercano, no mayor que
x, que sea divisible por y.
Ejemplos
Ejemplo de uso
Query
Response
positiveModuloOrNull
Introducido en: v25.5.0 Calcula el resto de dividira entre b. Es similar a la función positiveModulo, salvo que positiveModuloOrNull devuelve NULL
cuando la operación provocaría de otro modo una excepción de coma flotante. En el caso de argumentos de coma flotante, esto solo ocurre cuando el
divisor es 0; para argumentos enteros, además cubre el valor negativo mínimo módulo -1 (por ejemplo, -128 % -1 para Int8).
Sintaxis
positive_modulo_or_null, pmodOrNull
Argumentos
x— El dividendo.(U)Int*/Float32/64. -y— El divisor (módulo).(U)Int*/Float32/64.
x y el entero más cercano, no mayor que
x, divisible por y, o NULL cuando la operación produciría una excepción de coma flotante: cuando el divisor es cero o,
para argumentos enteros, al calcular el valor negativo mínimo módulo -1.
Ejemplos
positiveModuloOrNull con cero
Query
Response
Query
Response
sqr
Introducido en: v26.7.0 Calcula el cuadrado de un valorx.
Sintaxis
x por sí mismo.
Ejemplos
Elevar al cuadrado un número
Query
Response