ceil
Introduzido em: v1.1.0
Como floor, mas retorna o menor número arredondado maior ou igual a x.
Se o arredondamento causar overflow (por exemplo, ceiling(255, -1)), o resultado é indefinido.
Sintaxe
ceiling(x[, N])Aliases: ceiling
Argumentos
x— O valor a ser arredondado.Float*ouDecimal*ou(U)Int*N— Opcional. O número de casas decimais para o arredondamento. O valor padrão é zero, o que significa arredondar para um inteiro. Pode ser negativo.(U)Int*
Valor retornado
Retorna um número arredondado do mesmo tipo de x. Float* ou Decimal* ou (U)Int*
Exemplos
Uso básico
SELECT ceiling(123.45, 1) AS rounded┌─rounded─┐
│ 123.5 │
└─────────┘Precisão negativa
SELECT ceiling(123.45, -1)┌─ceiling(123.45, -1)─┐
│ 130 │
└─────────────────────┘floor
Introduzido em: v1.1.0
Retorna o maior número arredondado menor ou igual a x, em que o número arredondado é um múltiplo de 1 / 10 * N, ou o número mais próximo do tipo de dado apropriado se 1 / 10 * N não for exato.
Argumentos inteiros podem ser arredondados com um argumento N negativo.
Com N não negativo, a função retorna x.
Se o arredondamento causar overflow (por exemplo, floor(-128, -1)), o resultado é indefinido.
Sintaxe
floor(x[, N])Argumentos
x— O valor a ser arredondado.Float*ouDecimal*ou(U)Int*N— Opcional. O número de casas decimais para o qual arredondar. O padrão é zero, o que significa arredondar para um número inteiro. Pode ser negativo.(U)Int*
Valor retornado
Retorna um número arredondado do mesmo tipo de x. Float* ou Decimal* ou (U)Int*
Exemplos
Exemplo de uso
SELECT floor(123.45, 1) AS rounded┌─rounded─┐
│ 123.4 │
└─────────┘Precisão negativa
SELECT floor(123.45, -1)┌─floor(123.45, -1)─┐
│ 120 │
└───────────────────┘round
Introduzido na versão: v1.1.0
Arredonda um valor para um número especificado de casas decimais N.
- Se
N > 0, a função arredonda à direita do separador decimal. - Se
N < 0, a função arredonda à esquerda do separador decimal. - Se
N = 0, a função arredonda para o inteiro mais próximo.
A função retorna o número mais próximo da ordem especificada.
Se o valor de entrada estiver à mesma distância de dois números vizinhos, a função usa arredondamento bancário para entradas Float* e arredonda para longe de zero para os demais tipos numéricos (Decimal*).
Se o arredondamento causar overflow (por exemplo, round(255, -1)), o resultado é indefinido.
Sintaxe
round(x[, N])Argumentos
x— Um número a ser arredondado.Float*ouDecimal*ou(U)Int*N— Opcional. O número de casas decimais para o qual arredondar. O padrão é0.(U)Int*
Valor retornado
Retorna um número arredondado do mesmo tipo de x. Float* ou Decimal* ou (U)Int*
Exemplos
Entradas do tipo Float
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;┌───x─┬─round(x)─┐
│ 0 │ 0 │
│ 0.5 │ 0 │
│ 1 │ 1 │
└─────┴──────────┘Valores de entrada decimais
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
Introduzido em: v1.1.0
Recebe um número que representa a idade de uma pessoa, compara esse número com faixas etárias padrão e retorna o maior ou o menor valor da faixa em que ele se enquadra.
- Retorna
0, paraidade < 1. - Retorna
17, para1 ≤ idade ≤ 17. - Retorna
18, para18 ≤ idade ≤ 24. - Retorna
25, para25 ≤ idade ≤ 34. - Retorna
35, para35 ≤ idade ≤ 44. - Retorna
45, para45 ≤ idade ≤ 54. - Retorna
55, paraidade ≥ 55.
Sintaxe
roundAge(num)Argumentos
Valor retornado
Retorna a maior ou a menor idade da faixa em que age se enquadra. UInt8
Exemplos
Exemplo 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
Introduzido em: v20.1.0
Arredonda um número para uma posição decimal N especificada.
Se o número a ser arredondado estiver exatamente no meio entre dois números, a função usa um método de arredondamento chamado arredondamento bancário, que é o método de arredondamento padrão para números de ponto flutuante definido pelo IEEE 754.
- Se
N > 0, a função arredonda à direita do separador decimal - Se
N < 0, a função arredonda à esquerda do separador decimal - Se
N = 0, a função arredonda para o inteiro seguinte
Sintaxe
roundBankers(x[, N])Argumentos
x— Um número a ser arredondado.(U)Int*ouDecimal*ouFloat*[, N]— Opcional. O número de casas decimais para arredondamento. O padrão é0.(U)Int*
Valor retornado
Retorna um valor arredondado pelo método de arredondamento bancário. (U)Int* ou Decimal* ou Float*
Exemplos
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
Introduzido em: v20.1.0
Arredonda um número para baixo até um elemento do array especificado. Se o valor for menor que o limite inferior, o limite inferior será retornado.
Sintaxe
roundDown(num, arr)Argumentos
num— Um número a ser arredondado para baixo.(U)Int*ouDecimal*ouFloat*arr— Array de elementos para os quaisnumserá arredondado para baixo.Array((U)Int*)ouArray(Float*)
Valor retornado
Retorna um número arredondado para baixo até um elemento de arr. Se o valor for menor que o limite inferior, esse limite será retornado. (U)Int* ou Float*
Exemplos
Exemplo 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
Introduzido em: v1.1.0
Arredonda um número para baixo até o valor mais próximo dentre um conjunto de durações comumente usadas: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000.
Se o número for menor que um, retorna 0.
Sintaxe
roundDuration(num)Argumentos
num— Um número a ser arredondado para um dos valores no conjunto de durações comuns.(U)Int*ouFloat*
Valor retornado
Retorna 0 para num < 1. Caso contrário, retorna um dos seguintes valores: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. UInt16
Exemplos
Exemplo 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
Introduzido em: v1.1.0
Arredonda um número para baixo para a potência de dois (inteira não negativa) mais próxima.
Se o número for menor que um, retorna 0.
Sintaxe
roundToExp2(num)Argumentos
Valor retornado
Retorna num arredondado para baixo para a potência de dois mais próxima (inteira e não negativa); caso contrário, 0 para num < 1. (U)Int* ou Float*
Exemplos
Exemplo 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
Introduzido em: v1.1.0
Como floor, mas retorna o número arredondado cujo valor absoluto é o maior valor menor ou igual ao de x.
Sintaxe
truncate(x[, N])Aliases: truncate
Argumentos
x— O valor a ser arredondado.Float*ouDecimal*ou(U)Int*N— Opcional. O número de casas decimais para arredondar. O padrão é zero, o que significa arredondar para um número inteiro.(U)Int*
Valor retornado
Retorna um número arredondado do mesmo tipo de x. Float* ou Decimal* ou (U)Int*
Exemplos
Uso básico
SELECT truncate(123.499, 1) AS res;┌───res─┐
│ 123.4 │
└───────┘