# Funciones Numéricas

# plus

Calcula la suma de dos valores a y b.

plus(a, b)

Es posible sumar un entero y una fecha o una fecha con hora. La primera operación incrementa el número de días en la fecha, la segunda operación incrementa el número de segundos en la fecha con hora.

Alias

a + b (operador)

# minus

Calcula la diferencia entre dos valores a y b. El resultado siempre es con signo.

Similar a plus, es posible restar un entero de una fecha o una fecha con hora.

minus(a, b)

Alias

a - b (operador)

# multiply

Calcula el producto de dos valores a y b.

multiply(a, b)

Alias:

a * b (operador)

# divide

Calcula el cociente de dos valores a y b. El tipo de resultado siempre es Float64 (opens new window). La división entera se realiza mediante la función intDiv.

divide(a, b)

La división por 0 devuelve inf, inf o nan.

Alias

a / b (operador)

# exp

Devuelve e elevado a la potencia del argumento dado.

exp(x)

# log2

Devuelve el logaritmo binario del argumento.

log2(x)

# log10

Devuelve el logaritmo decimal del argumento.

log10(x)

# cos

Devuelve el coseno del argumento.

cos(x)

# tan

Devuelve la tangente del argumento.

tan(x)

# sin

Devuelve el seno del argumento.

sin(x)

# sqrt

Devuelve la raíz cuadrada del argumento.

sqrt(x)

# abs

Calcula el valor absoluto de a. No tiene efecto si a es de tipo sin signo. Si a es de tipo con signo, devuelve un número sin signo.

abs(a)

# floor

Devuelve el número redondeado más grande que sea menor o igual a x. Un número redondeado es un múltiplo de 1 / 10N, o el número más cercano del tipo de datos apropiado si 1 / 10N no es exacto. 'N' es una constante entera, un parámetro opcional. Por defecto es cero, lo que significa redondear a un número entero. 'N' puede ser negativo.

floor(x[, N])

x es cualquier tipo numérico. El resultado es un número del mismo tipo. Para argumentos enteros, tiene sentido redondear con un valor N negativo (para N no negativo, la función no hace nada). Si el redondeo causa desbordamiento (por ejemplo, floor(-128, -1)), se devuelve un resultado específico de la implementación.

Ejemplos

floor(123.45, 1) = 123.4, floor(123.45, -1) = 120

# ceil

Devuelve el número redondeado más pequeño que sea mayor o igual a x. En todos los demás aspectos, es igual a la función floor (ver arriba).

# round

Redondea un valor a un número específico de decimales. La función devuelve el número más cercano del orden especificado. En caso de que el número dado tenga la misma distancia a los números circundantes, la función utiliza el redondeo del banquero para los tipos de números de punto flotante y redondea lejos de cero para los otros tipos de números (Decimal).

round(expression [, decimal_places])

Argumentos

  • expression - Un número que se va a redondear. Puede ser cualquier expresión que devuelva el tipo de datos numérico.
  • decimal-places - Un valor entero.
    • Si decimal-places > 0, entonces la función redondea el valor a la derecha del punto decimal.
    • Si decimal-places < 0, entonces la función redondea el valor a la izquierda del punto decimal.
    • Si decimal-places = 0, entonces la función redondea el valor a un número entero. En este caso, se puede omitir el argumento.

Valor devuelto

El número redondeado del mismo tipo que el número de entrada.

Ejemplos

  • Usar con Float

    SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3
    
    ┌───x─┬─round(divide(number, 2))─┐
    │   00 │
    │ 0.50 │
    │   11 │
    └─────┴──────────────────────────┘
    
  • Usar con Decimal

    SELECT cast(number / 2 AS Decimal(10,4)) AS x, round(x) FROM system.numbers LIMIT 3
    
    ┌───x─┬─round(CAST(divide(number, 2), 'Decimal(10, 4)'))─┐
    │   00 │
    │ 0.51 │
    │   11 │
    └─────┴──────────────────────────────────────────────────┘
    
  • Redondeo al número más cercano.

    round(3.2, 0) = 3
    round(4.1267, 2) = 4.13
    round(22,-1) = 20
    round(467,-2) = 500
    round(-467,-2) = -500
    
  • Redondeo del banquero.

    round(3.5) = 4
    round(4.5) = 4
    round(3.55, 1) = 3.6
    round(3.65, 1) = 3.6
    

# rand32

Devuelve un número UInt32 aleatorio, distribuido uniformemente en el rango de todos los posibles números UInt32. Utiliza un generador congruencial lineal.

# randNormal

Devuelve un número Float64 aleatorio extraído de una distribución normal (opens new window).

randNormal(mean, variance)

Argumentos

  • mean - Float64 - valor medio de la distribución,
  • variance - Float64 - varianza de la distribución.

Valor devuelto

  • Número aleatorio.
  • Tipo: Float64.

Ejemplo

SELECT randNormal(10, 2) FROM numbers(5)
┌──randNormal(10, 2)─┐
│ 13.389228911709653 │
│ 8.622949707401295  │
│ 10.801887062682981 │
│ 4.5220192605895315 │
│ 10.901239123982567 │
└────────────────────┘