ceil
Introducido en: v1.1.0
Como floor, pero devuelve el menor número redondeado que sea mayor o igual que x.
Si el redondeo provoca un desbordamiento (por ejemplo, ceiling(255, -1)), el resultado no está definido.
Sintaxis
ceiling(x[, N])Alias: ceiling
Argumentos
x— El valor que se desea redondear.Float*oDecimal*o(U)Int*N— Opcional. El número de posiciones decimales al que se redondea. El valor predeterminado es cero, lo que significa que se redondea a un entero. Puede ser negativo.(U)Int*
Valor devuelto
Devuelve un número redondeado del mismo tipo que x. Float* o Decimal* o (U)Int*
Ejemplos
Uso básico
SELECT ceiling(123.45, 1) AS rounded┌─rounded─┐
│ 123.5 │
└─────────┘Precisión negativa
SELECT ceiling(123.45, -1)┌─ceiling(123.45, -1)─┐
│ 130 │
└─────────────────────┘floor
Introducido en: v1.1.0
Devuelve el mayor número redondeado que sea menor o igual que x, donde el número redondeado es un múltiplo de 1 / 10 * N, o el número más cercano del tipo de dato correspondiente si 1 / 10 * N no es exacto.
Los argumentos enteros pueden redondearse con un argumento N negativo.
Con N no negativo, la función devuelve x.
Si el redondeo provoca un desbordamiento (por ejemplo, floor(-128, -1)), el resultado es indefinido.
Sintaxis
floor(x[, N])Argumentos
x— El valor que se va a redondear.Float*oDecimal*o(U)Int*N— Opcional. El número de posiciones decimales al que redondear. El valor predeterminado es cero, lo que significa redondear a un entero. Puede ser negativo.(U)Int*
Valor devuelto
Devuelve un número redondeado del mismo tipo que x. Float* o Decimal* o (U)Int*
Ejemplos
Ejemplo de uso
SELECT floor(123.45, 1) AS rounded┌─rounded─┐
│ 123.4 │
└─────────┘Precisión negativa
SELECT floor(123.45, -1)┌─floor(123.45, -1)─┐
│ 120 │
└───────────────────┘round
Introducido en: v1.1.0
Redondea un valor a un número determinado de posiciones decimales N.
- Si
N > 0, la función redondea a la derecha del punto decimal. - Si
N < 0, la función redondea a la izquierda del punto decimal. - Si
N = 0, la función redondea al entero más próximo.
La función devuelve el número más cercano del orden especificado.
Si el valor de entrada está a igual distancia de dos números adyacentes, la función usa redondeo bancario para entradas Float* y redondea alejándose de cero para los demás tipos numéricos (Decimal*).
Si el redondeo provoca un desbordamiento (por ejemplo, round(255, -1)), el resultado no está definido.
Sintaxis
round(x[, N])Argumentos
x— Un número que se va a redondear.Float*oDecimal*o(U)Int*N— Opcional. El número de posiciones decimales al que se redondea. El valor predeterminado es0.(U)Int*
Valor devuelto
Devuelve un número redondeado del mismo tipo que x. Float* o Decimal* o (U)Int*
Ejemplos
Valores de entrada de coma flotante
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;┌───x─┬─round(x)─┐
│ 0 │ 0 │
│ 0.5 │ 0 │
│ 1 │ 1 │
└─────┴──────────┘Valores decimales
SELECT cast(number / 2 AS Decimal(10,4)) AS x, round(x) FROM system.numbers LIMIT 3;┌───x─┬─round(x)─┐
│ 0 │ 0 │
│ 0.5 │ 1 │
│ 1 │ 1 │
└─────┴──────────┘roundAge
Introducido en: v1.1.0
Toma un número que representa la edad de una persona, lo compara con rangos de edad estándar y devuelve el valor más alto o más bajo del rango en el que se encuentra el número.
- Devuelve
0, paraage < 1. - Devuelve
17, para1 ≤ age ≤ 17. - Devuelve
18, para18 ≤ age ≤ 24. - Devuelve
25, para25 ≤ age ≤ 34. - Devuelve
35, para35 ≤ age ≤ 44. - Devuelve
45, para45 ≤ age ≤ 54. - Devuelve
55, paraage ≥ 55.
Sintaxis
roundAge(num)Argumentos
Valor devuelto
Devuelve la edad más alta o más baja del rango en el que cae age. UInt8
Ejemplos
Ejemplo de uso
SELECT *, roundAge(*) FROM system.numbers WHERE number IN (0, 5, 20, 31, 37, 54, 72);┌─number─┬─roundAge(number)─┐
│ 0 │ 0 │
│ 5 │ 17 │
│ 20 │ 18 │
│ 31 │ 25 │
│ 37 │ 35 │
│ 54 │ 45 │
│ 72 │ 55 │
└────────┴──────────────────┘roundBankers
Introducido en: v20.1.0
Redondea un número a la posición decimal N especificada.
Si el número que se va a redondear está exactamente a mitad de camino entre dos números, la función utiliza un método de redondeo llamado redondeo bancario, que es el método de redondeo predeterminado para los números de coma flotante definidos en IEEE 754.
- Si
N > 0, la función redondea a la derecha del punto decimal - Si
N < 0, la función redondea a la izquierda del punto decimal - Si
N = 0, la función redondea al entero más cercano
Sintaxis
roundBankers(x[, N])Argumentos
x— Un número para redondear.(U)Int*oDecimal*oFloat*[, N]— Opcional. El número de posiciones decimales al que se redondea. El valor predeterminado es0.(U)Int*
Valor devuelto
Devuelve un valor redondeado mediante el método de redondeo bancario. (U)Int* o Decimal* o Float*
Ejemplos
Uso básico
SELECT number / 2 AS x, roundBankers(x, 0) AS b FROM system.numbers LIMIT 10┌───x─┬─b─┐
│ 0 │ 0 │
│ 0.5 │ 0 │
│ 1 │ 1 │
│ 1.5 │ 2 │
│ 2 │ 2 │
│ 2.5 │ 2 │
│ 3 │ 3 │
│ 3.5 │ 4 │
│ 4 │ 4 │
│ 4.5 │ 4 │
└─────┴───┘roundDown
Introducido en: v20.1.0
Redondea un número hacia abajo al elemento del array especificado. Si el valor es menor que el límite inferior, se devuelve el límite inferior.
Sintaxis
roundDown(num, arr)Argumentos
num— Un número que se redondeará hacia abajo.(U)Int*oDecimal*oFloat*arr— Array de elementos al que se redondearánumhacia abajo.Array((U)Int*)oArray(Float*)
Valor devuelto
Devuelve un número redondeado hacia abajo hasta un elemento de arr. Si el valor es menor que el límite inferior mínimo, se devuelve ese límite. (U)Int* o Float*
Ejemplos
Ejemplo de uso
SELECT *, roundDown(*, [3, 4, 5]) FROM system.numbers WHERE number IN (0, 1, 2, 3, 4, 5)┌─number─┬─roundDown(number, [3, 4, 5])─┐
│ 0 │ 3 │
│ 1 │ 3 │
│ 2 │ 3 │
│ 3 │ 3 │
│ 4 │ 4 │
│ 5 │ 5 │
└────────┴──────────────────────────────┘roundDuration
Introducido en: v1.1.0
Redondea un número hacia abajo al valor más cercano dentro de un conjunto de duraciones de uso común: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000.
Si el número es menor que uno, devuelve 0.
Sintaxis
roundDuration(num)Argumentos
num— Un número que se redondea a uno de los valores del conjunto de duraciones comunes.(U)Int*oFloat*
Valor devuelto
Devuelve 0 para num < 1. En caso contrario, uno de los siguientes: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. UInt16
Ejemplos
Ejemplo de uso
SELECT *, roundDuration(*) FROM system.numbers WHERE number IN (0, 9, 19, 47, 101, 149, 205, 271, 421, 789, 1423, 2345, 4567, 9876, 24680, 42573)┌─number─┬─roundDuration(number)─┐
│ 0 │ 0 │
│ 9 │ 1 │
│ 19 │ 10 │
│ 47 │ 30 │
│ 101 │ 60 │
│ 149 │ 120 │
│ 205 │ 180 │
│ 271 │ 240 │
│ 421 │ 300 │
│ 789 │ 600 │
│ 1423 │ 1200 │
│ 2345 │ 1800 │
│ 4567 │ 3600 │
│ 9876 │ 7200 │
│ 24680 │ 18000 │
│ 42573 │ 36000 │
└────────┴───────────────────────┘roundToExp2
Introducido en: v1.1.0
Redondea un número hacia abajo hasta la potencia de dos (entera no negativa) más cercana.
Si el número es menor que uno, devuelve 0.
Sintaxis
roundToExp2(num)Argumentos
Valor devuelto
Devuelve num redondeado hacia abajo hasta la potencia de dos más cercana (entera no negativa); en caso contrario, devuelve 0 si num < 1. (U)Int* o Float*
Ejemplos
Ejemplo de uso
SELECT *, roundToExp2(*) FROM system.numbers WHERE number IN (0, 2, 5, 10, 19, 50)┌─number─┬─roundToExp2(number)─┐
│ 0 │ 0 │
│ 2 │ 2 │
│ 5 │ 4 │
│ 10 │ 8 │
│ 19 │ 16 │
│ 50 │ 32 │
└────────┴─────────────────────┘trunc
Introducido en: v1.1.0
Como floor, pero devuelve el número redondeado cuyo valor absoluto es el mayor que no supera el de x.
Sintaxis
truncate(x[, N])Alias: truncate
Argumentos
x— El valor que se redondeará.Float*oDecimal*o(U)Int*N— Opcional. El número de posiciones decimales al que se redondeará. El valor predeterminado es cero, lo que significa que se redondea a un entero.(U)Int*
Valor devuelto
Devuelve un número redondeado del mismo tipo que x. Float* o Decimal* o (U)Int*
Ejemplos
Uso básico
SELECT truncate(123.499, 1) AS res;┌───res─┐
│ 123.4 │
└───────┘