Saltar al contenido principal
La documentación que aparece a continuación se genera a partir de la tabla del sistema system.functions

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* o Decimal* 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
Query
SELECT ceiling(123.45, 1) AS rounded
Response
┌─rounded─┐
│   123.5 │
└─────────┘
Precisión negativa
Query
SELECT ceiling(123.45, -1)
Response
┌─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* o Decimal* 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
Query
SELECT floor(123.45, 1) AS rounded
Response
┌─rounded─┐
│   123.4 │
└─────────┘
Precisión negativa
Query
SELECT floor(123.45, -1)
Response
┌─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* o Decimal* o (U)Int*
  • N — Opcional. El número de posiciones decimales al que se redondea. El valor predeterminado es 0. (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
Query
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;
Response
┌───x─┬─round(x)─┐
│   0 │        0 │
│ 0.5 │        0 │
│   1 │        1 │
└─────┴──────────┘
Valores decimales
Query
SELECT cast(number / 2 AS  Decimal(10,4)) AS x, round(x) FROM system.numbers LIMIT 3;
Response
┌───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, para age < 1.
  • Devuelve 17, para 1 ≤ age ≤ 17.
  • Devuelve 18, para 18 ≤ age ≤ 24.
  • Devuelve 25, para 25 ≤ age ≤ 34.
  • Devuelve 35, para 35 ≤ age ≤ 44.
  • Devuelve 45, para 45 ≤ age ≤ 54.
  • Devuelve 55, para age ≥ 55.
Sintaxis
roundAge(num)
Argumentos
  • age — Un número que representa una edad en años. (U)Int* o Float*
Valor devuelto Devuelve la edad más alta o más baja del rango en el que cae age. UInt8 Ejemplos Ejemplo de uso
Query
SELECT *, roundAge(*) FROM system.numbers WHERE number IN (0, 5, 20, 31, 37, 54, 72);
Response
┌─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 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
Notas
  • Cuando el número a redondear está exactamente a mitad de camino entre dos números, se redondea al dígito par más cercano en la posición decimal especificada. Por ejemplo: 3.5 se redondea hacia arriba a 4, 2.5 se redondea hacia abajo a 2.
  • La función round realiza el mismo tipo de redondeo para números de coma flotante.
  • La función roundBankers también redondea enteros de la misma forma; por ejemplo, roundBankers(45, -1) = 40.
  • En los demás casos, la función redondea los números al entero más cercano.
Use el redondeo bancario para sumar o restar númerosAl usar el redondeo bancario, puede reducir el efecto que tiene el redondeo de números en los resultados de sumarlos o restarlos.Por ejemplo, sume los números 1.5, 2.5, 3.5, 4.5 con distintos tipos de redondeo:
  • Sin redondeo: 1.5 + 2.5 + 3.5 + 4.5 = 12.
  • Redondeo bancario: 2 + 2 + 4 + 4 = 12.
  • Redondeo al entero más cercano: 2 + 3 + 4 + 5 = 14.
Sintaxis
roundBankers(x[, N])
Argumentos
  • x — Un número para redondear. (U)Int* o Decimal* o Float*
  • [, N] — Opcional. El número de posiciones decimales al que se redondea. El valor predeterminado es 0. (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
Query
SELECT number / 2 AS x, roundBankers(x, 0) AS b FROM system.numbers LIMIT 10
Response
┌───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 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
Query
SELECT *, roundDown(*, [3, 4, 5]) FROM system.numbers WHERE number IN (0, 1, 2, 3, 4, 5)
Response
┌─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* o Float*
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
Query
SELECT *, roundDuration(*) FROM system.numbers WHERE number IN (0, 9, 19, 47, 101, 149, 205, 271, 421, 789, 1423, 2345, 4567, 9876, 24680, 42573)
Response
┌─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
Query
SELECT *, roundToExp2(*) FROM system.numbers WHERE number IN (0, 2, 5, 10, 19, 50)
Response
┌─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* o Decimal* 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
Query
SELECT truncate(123.499, 1) AS res;
Response
┌───res─┐
│ 123.4 │
└───────┘
Última modificación el 10 de junio de 2026