Visão geral
As funções aritméticas funcionam com quaisquer dois operandos do tipoUInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32 ou Float64.
Antes de executar a operação, ambos os operandos são convertidos para o tipo de resultado. O tipo de resultado é determinado da seguinte forma (a menos que especificado
de outra forma na documentação da função abaixo):
- Se ambos os operandos tiverem até 32 bits, o tamanho do tipo de resultado será o do próximo tipo maior em relação ao maior dos
dois operandos (promoção de tamanho de inteiro). Por exemplo,
UInt8 + UInt16 = UInt32ouFloat32 * Float32 = Float64. - Se um dos operandos tiver 64 bits ou mais, o tamanho do tipo de resultado será o mesmo do maior dos dois operandos. Por
exemplo,
UInt32 + UInt128 = UInt128ouFloat32 * Float64 = Float64. - Se um dos operandos for com sinal, o tipo de resultado também será com sinal; caso contrário, será sem sinal. Por exemplo,
UInt32 * Int32 = Int64ouUInt32 * UInt32 = UInt64.
abs
Introduzido em: v1.1.0 Calcula o valor absoluto dex. Não tem efeito se x for de um tipo sem sinal. Se x for de um tipo com sinal, retorna um número sem sinal.
Sintaxe
x— Valor cujo valor absoluto será obtido
x
Exemplos
Exemplo de uso
Query
Response
avg2
Introduzido em: v25.11.0 Calcula e retorna o valor médio dos argumentos fornecidos. Suporta tipos numéricos e temporais. Sintaxex1, x2]— Aceita dois valores para calcular a média.
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
byteSwap
Introduzido em: v23.10.0 Inverte os bytes de um inteiro, ou seja, altera sua ordem de bytes. O exemplo abaixo pode ser entendido da seguinte forma:- Converta o inteiro decimal para seu equivalente hexadecimal em ordem big-endian, ou seja, 3351772109 -> C7 C7 FB CD (4 bytes)
- Inverta os bytes, ou seja, C7 C7 FB CD -> CD FB C7 C7
- Converta o resultado de volta para um inteiro, assumindo big-endian, ou seja, CD FB C7 C7 -> 3455829959 Um caso de uso dessa função é inverter endereços IPv4:
x— Um valor inteiro.(U)Int*
x com a ordem dos bytes invertida. (U)Int*
Exemplos
Exemplo de uso
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
divide
Introduzido em: v1.1.0 Calcula o quociente entre dois valores,a e b. O tipo do resultado é sempre Float64.
A divisão inteira é fornecida pela função intDiv.
A divisão por
0 retorna inf, -inf ou nan.x— Dividendo -y— Divisor
Query
Response
Query
Response
divideDecimal
Introduzido em: v22.12.0 Realiza a divisão entre dois valores decimais. O valor resultante será do tipo Decimal256. A escala do resultado pode ser especificada explicitamente pelo argumentoresult_scale (um Integer constante no intervalo [0, 76]). Se não for especificada, a escala do resultado será a maior escala entre os argumentos fornecidos.
Esta função é significativamente mais lenta do que a
divide comum.
Se você não precisar realmente de precisão controlada e/ou precisar de cálculo rápido, considere usar divide.x— Primeiro valor: Decimal. -y— Segundo valor: Decimal. -result_scale— Escala do resultado. Tipo Int/UInt.
Decimal256
Exemplos
Exemplo 1
Query
Response
Query
Response
divideOrNull
Introduzido em: v25.5.0 O mesmo quedivide, mas retorna NULL ao dividir por zero.
Sintaxe
x— Dividendo -y— Divisor
Query
Response
gcd
Introduzido em: v1.1.0 Retorna o máximo divisor comum de dois valores a e b. Uma exceção é lançada ao dividir por zero ou ao dividir o menor número negativo por menos um. Sintaxex— Primeiro inteiro -y— Segundo inteiro
x e y.
Exemplos
Exemplo de uso
Query
Response
ifNotFinite
Introduzido em: v20.3.0 Verifica se um valor de ponto flutuante é finito. Você pode obter um resultado semelhante usando o operador ternário:isFinite(x) ? x : y.
Sintaxe
xsexfor finito.ysexnão for finito.
Query
Response
intDiv
Introduzido em: v1.1.0 Executa a divisão inteira de dois valores,x por y. Em outras palavras,
calcula o quociente arredondado para baixo até o menor inteiro seguinte.
O resultado tem a mesma largura que o dividendo (o primeiro parâmetro).
Uma exceção é lançada ao dividir por zero, quando o quociente não cabe
no intervalo do dividendo ou ao dividir o menor número negativo por menos um.
Sintaxe
x— Operando esquerdo. -y— Operando direito.
x por y
Exemplos
Divisão inteira de dois floats
Query
Response
Query
Response
intDivOrNull
Introduzido em: v25.5.0 Igual aintDiv, mas retorna NULL ao dividir por zero ou ao dividir o menor
número negativo por menos um.
Sintaxe
x por y, ou NULL.
Exemplos
Divisão inteira por zero
Query
Response
Query
Response
intDivOrZero
Introduzido em: v1.1.0 Igual aintDiv, mas retorna zero ao dividir por zero ou ao dividir o menor
número negativo por menos um.
Sintaxe
Query
Response
Query
Response
isFinite
Introduzido em: v1.1.0 Retorna1 se o argumento Float32 ou Float64, ou BFloat16, não for infinito nem NaN;
caso contrário, retorna 0.
Sintaxe
1 se x não for infinito nem NaN; caso contrário, 0.
Exemplos
Verifique se um número é finito
Query
Response
isInfinite
Introduzido em: v1.1.0 Retorna1 se o argumento Float32, Float64 ou BFloat16 for infinito; caso contrário, retorna 0.
Observe que 0 é retornado para NaN.
Sintaxe
1 se x for infinito; caso contrário, 0 (inclusive para NaN).
Exemplos
Verifique se um número é infinito
Query
Response
isNaN
Introduzido em: v1.1.0 Retorna1 se o argumento do tipo Float32, Float64 ou BFloat16 for NaN; caso contrário, retorna 0.
Sintaxe
1 se for NaN; caso contrário, 0
Exemplos
Exemplo de uso
Query
Response
kqlBin
Introduzido em: v26.8.0 Arredonda um valor para baixo até o múltiplo deroundTo, como faz bin() da Kusto Query Language.
A regra depende dos tipos de argumento: um número é arredondado aritmeticamente; um intervalo de tempo (um Interval) é arredondado por um intervalo de tempo; e um DateTime é arredondado por um intervalo de tempo. Um DateTime do KQL é um DateTime64; os tipos mais restritos DateTime e Date são rejeitados porque não conseguem representar todos os bins que um DateTime do KQL pode produzir.
Esta função dá suporte a bin() quando dialect = 'kusto'. Ela não deve ser chamada diretamente do SQL.
Sintaxe
value— Um número, um intervalo de tempo ou uma DateTime (umDateTime64). -roundTo— O tamanho do bin.
value arredondado para baixo até o múltiplo mais próximo de roundTo.
Exemplos
número
Query
Response
Query
Response
Query
Response
kqlBinAt
Introduzido em: v26.8.0 Arredonda um valor para baixo até um múltiplo debinSize, contado a partir de fixedPoint, como faz bin_at() da Kusto Query
Language. Os bins podem se alinhar antes ou depois do ponto fixo.
A regra depende dos tipos de argumento: um número é arredondado aritmeticamente; um intervalo de tempo (que
é um Interval) é arredondado por um intervalo de tempo a partir de outro intervalo de tempo; e uma DateTime é arredondada por um
intervalo de tempo contado a partir de um ponto fixo de DateTime. Uma DateTime KQL é um DateTime64; os tipos mais restritos
DateTime e Date são rejeitados, pois não conseguem representar todos os bins que uma DateTime KQL
pode produzir.
Esta função dá suporte a bin_at() quando dialect = 'kusto'. Ela não deve ser chamada diretamente
em SQL.
Sintaxe
value— Um número, um intervalo de tempo ou uma DateTime (umDateTime64). -binSize— O tamanho do bin. -fixedPoint— O ponto fixo para a contagem dos bins.
value arredondado para baixo até o múltiplo de binSize mais próximo, a partir de fixedPoint.
Exemplos
número
Query
Response
Query
Response
kqlDateTimeBinAt
Introduzido em: v26.8.0 Arredonda um DateTime para baixo até o múltiplo de intervalo de tempo, contado a partir de um ponto fixo de DateTime. Sintaxevalue— O DateTime a ser arredondado. -binSize— O tamanho do intervalo de tempo do bin. -fixedPoint— O ponto fixo do DateTime.
kqlDivide
Introduzido na versão: v26.8.0 Divisão conforme definida pela Kusto Query Language: dois operandos inteiros resultam em um inteiro, portanto7 / 2 é 3, e dois operandos de intervalo de tempo (que são valores Interval) resultam em sua
razão de números reais, portanto 15ms / 10ms é 1.5. Qualquer outra combinação de tipos de operandos é dividida
como divide.
Esta função implementa o operador / quando dialect = 'kusto'. Ela não deve ser chamada
diretamente em SQL.
Sintaxe
x— O dividendo. -y— O divisor.
intDiv(x, y) quando ambos os argumentos são inteiros, a razão entre os ticks dos intervalos quando ambos são intervalos e divide(x, y) caso contrário.
Exemplos
inteiros
Query
Response
Query
Response
Query
Response
kqlMultiply
Introduzido na versão: v26.8.0 Multiplicação conforme definida pela Kusto Query Language: um intervalo de tempo (umInterval) é multiplicado por um
número em qualquer uma das posições, portanto 2 * 1h equivale a duas horas. Dois argumentos sem um intervalo são multiplicados como em
multiply.
Esta função implementa o operador * quando dialect = 'kusto'. Ela não deve ser chamada
diretamente em SQL.
Sintaxe
x— Um número ou um intervalo de tempo. -y— Um número ou um intervalo de tempo sexfor um número.
Query
Response
Query
Response
kqlRangeCount
Introduzido em: v26.8.0 O número de linhas produzidas pela fonterange da Kusto Query Language: floor((to - from) / step) + 1, nunca inferior a zero. Os limites e o passo podem ser números, datetimes
incrementados por um intervalo de tempo (um Interval) ou intervalos de tempo; as formas temporais são contadas em nanossegundos
inteiros, o que não pode ser expresso por uma única divisão no ClickHouse. Inteiros e decimais são contados
exatamente, sem usar Float64.
Esta função dá suporte à fonte range quando dialect = 'kusto'. Ela não deve ser chamada
diretamente em SQL.
Sintaxe
from— O primeiro valor do intervalo. -to— O valor que o intervalo não excede. -step— A diferença entre dois valores consecutivos.
Query
Response
Query
Response
lcm
Introduzido em: v1.1.0 Retorna o mínimo múltiplo comum de dois valoresx e y.
Uma exceção é gerada ao dividir por zero ou ao dividir o menor número negativo por menos um.
Sintaxe
x e y. (U)Int*
Exemplos
Exemplo de uso
Query
Response
max2
Introduzido em: v21.11.0 Retorna o maior de dois valores numéricos,x e y.
Sintaxe
x— Primeiro valor(U)Int8/16/32/64ouFloat*ouBFloat16ouDecimaly— Segundo valor(U)Int8/16/32/64ouFloat*ouBFloat16ouDecimal
x e y. Float64
Exemplos
Exemplo de uso
Query
Response
midpoint
Introduzido em: v25.11.0 Calcula e retorna a média dos argumentos fornecidos. Oferece suporte a tipos numéricos e temporais. Sintaxex1[, x2, ...]— Aceita um único valor ou vários valores para calcular a média.
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
min2
Introduzido em: v21.11.0 Retorna o menor entre dois valores numéricos,x e y.
Sintaxe
x— Primeiro valor(U)Int8/16/32/64ouFloat*ouBFloat16ouDecimaly— Segundo valor(U)Int8/16/32/64ouFloat*ouBFloat16ouDecimal
x e y. Float64
Exemplos
Exemplo de uso
Query
Response
minus
Introduzido em: v1.1.0 Calcula a diferença entre dois valoresa e b. O resultado é sempre com sinal.
Assim como em plus, é possível subtrair um inteiro de uma data ou data com hora.
Além disso, há suporte à subtração entre data com hora, resultando na diferença de tempo entre elas.
Também é possível subtrair um Time ou Time64 de um DateTime ou DateTime64;
o valor de tempo é aplicado como um deslocamento em segundos. DateTime menos Time produz
um DateTime; qualquer combinação que envolva DateTime64 ou Time64 produz um DateTime64
com a escala máxima dos dois argumentos.
Sintaxe
x— Minuendo. -y— Subtraendo.
Query
Response
Query
Response
modulo
Introduzido em: v1.1.0 Calcula o resto da divisão de a por b. O tipo do resultado é inteiro se ambas as entradas forem inteiras. Se uma das entradas for um número de ponto flutuante, o tipo do resultado será Float64. O resto é calculado como em C++. A divisão truncada é usada para números negativos. É lançada uma exceção ao dividir por zero ou ao dividir o menor número negativo por menos um. Sintaxemod
Argumentos
a— O dividendo -b— O divisor (módulo)
Query
Response
moduloLegacy
Introduzido na versão: v1.1.0 Calcula o resto de uma divisão. Esta é a implementação legada do módulo que usa o operador% do C++, que pode produzir resultados negativos para argumentos negativos. Esta função existe para manter a compatibilidade com a lógica antiga de particionamento de tabelas. Use modulo ou positiveModulo para o comportamento padrão.
Sintaxe
(U)Int* ou Float*
Exemplos
Uso básico
Query
Response
moduloOrNull
Introduzido em: v25.5.0 Calcula o resto da divisão dea por b. Semelhante à função modulo, exceto que moduloOrNull retorna NULL
quando a operação, de outra forma, geraria uma exceção de ponto flutuante. Para argumentos de ponto flutuante, isso acontece apenas quando o
divisor é 0; para argumentos inteiros, isso também inclui o menor valor negativo módulo -1 (por exemplo, -128 % -1 para Int8).
Sintaxe
modOrNull
Argumentos
Valor retornado
Retorna o resto da divisão de x por y, ou NULL quando a operação geraria uma exceção de ponto flutuante:
quando o divisor é zero ou, para argumentos inteiros, ao calcular o menor valor negativo módulo -1.
Exemplos
moduloOrNull com zero
Query
Response
Query
Response
moduloOrZero
Introduzido em: v20.3.0 Semelhante amodulo, mas retorna zero em vez de lançar uma exceção para resultados inteiros quando, de outro modo, a operação geraria uma
exceção. Para resultados de ponto flutuante, um divisor zero produz NaN.
Sintaxe
a % b. Para resultados inteiros, retorna 0 quando a operação, de outra forma, lançaria uma exceção.
Para resultados de ponto flutuante, um divisor zero produz NaN.
Exemplos
Divisor zero inteiro
Query
Response
Query
Response
multiply
Introduzido em: v1.1.0 Calcula o produto de dois valores,x e y.
Sintaxe
Query
Response
multiplyDecimal
Introduzido em: v22.12.0 Realiza a multiplicação de dois números decimais. O valor resultante será do tipo Decimal256. A escala do resultado pode ser especificada explicitamente pelo argumentoresult_scale (Integer constante no intervalo [0, 76]). Se não for especificada, a escala do resultado será a maior escala entre os argumentos fornecidos.
Essas funções são significativamente mais lentas do que a
multiply comum.
Se você não precisa de precisão controlada e/ou precisa de um cálculo rápido, considere usar multiplyDecimal256
Exemplos
Exemplo de uso
Query
Response
Query
Response
Query
Response
Query
Response
negate
Introduzido em: v1.1.0 Nega o argumentox. O resultado é sempre um número com sinal.
Sintaxe
x— O valor a ser negado.
Query
Response
plus
Introduzido em: v1.1.0 Calcula a soma de dois valoresx e y. Alias: x + y (operador).
É possível somar um inteiro e uma data ou uma data com hora. A primeira
operação incrementa o número de dias da data; a segunda
incrementa o número de segundos da data com hora.
Também é possível somar uma data e uma hora. Somar um Date e um Time
produz um DateTime. Somar um Date e um Time64, ou um Date32 e
um Time ou Time64, produz um DateTime64.
Somar um Time ou Time64 a um DateTime ou DateTime64 aplica o valor de hora
como um deslocamento em segundos. DateTime mais Time produz um DateTime,
qualquer combinação que envolva DateTime64 ou Time64 produz um DateTime64
com a escala máxima dos dois argumentos.
Sintaxe
x— Operando esquerdo. -y— Operando direito.
Query
Response
Query
Response
Query
Response
positiveModulo
Introduzido em: v22.11.0 Calcula o resto da divisão dex por y. Semelhante à função
modulo, exceto que positiveModulo sempre retorna um número não negativo.
Sintaxe
positive_modulo, pmod
Argumentos
Valor retornado
Retorna a diferença entre x e o maior inteiro não superior a
x que seja divisível por y.
Exemplos
Exemplo de uso
Query
Response
positiveModuloOrNull
Introduzido em: v25.5.0 Calcula o resto da divisão dea por b. Semelhante à função positiveModulo, exceto que positiveModuloOrNull retorna NULL
quando a operação, de outra forma, geraria uma exceção de ponto flutuante. Para argumentos de ponto flutuante, isso acontece apenas quando o
divisor é 0; para argumentos inteiros, isso também cobre o menor valor negativo módulo -1 (por exemplo, -128 % -1 para Int8).
Sintaxe
positive_modulo_or_null, pmodOrNull
Argumentos
x— O dividendo.(U)Int*/Float32/64. -y— O divisor (módulo).(U)Int*/Float32/64.
x e o maior inteiro não superior a x que seja divisível por y, ou NULL quando a operação geraria uma exceção de ponto flutuante: quando o divisor é zero ou,
para argumentos inteiros, ao calcular o menor valor negativo módulo -1.
Exemplos
positiveModuloOrNull por zero
Query
Response
Query
Response
sqr
Introduzido em: v26.7.0 Calcula o quadrado de um valorx.
Sintaxe
x por ele mesmo.
Exemplos
Elevando um número ao quadrado
Query
Response