ceil
導入バージョン: v1.1.0
floor と同様ですが、x 以上となる最小の丸め後の値を返します。
丸めによってオーバーフローが発生した場合 (たとえば ceiling(255, -1)) 、結果は未定義です。
構文
ceiling(x[, N])別名: ceiling
引数
x— 丸める対象の値。Float*またはDecimal*または(U)Int*N— 任意。丸める小数点以下の桁数。デフォルトは 0 で、この場合は整数に丸められます。負の値も指定できます。(U)Int*
戻り値
x と同じ型の、丸められた数値を返します。Float* または Decimal* または (U)Int*
例
基本的な使い方
SELECT ceiling(123.45, 1) AS rounded┌─rounded─┐
│ 123.5 │
└─────────┘負の精度指定
SELECT ceiling(123.45, -1)┌─ceiling(123.45, -1)─┐
│ 130 │
└─────────────────────┘floor
導入バージョン: v1.1.0
x 以下の最大の丸め後の数値を返します。ここで、丸め後の数値は 1 / 10 * N の倍数です。1 / 10 * N を正確に表せない場合は、適切なデータ型で最も近い数値を返します。
整数の引数は、N に負の値を指定して丸めることができます。
N が 0 以上の場合、この関数は x を返します。
丸めによってオーバーフローが発生した場合 (たとえば floor(-128, -1)) 、結果は未定義です。
構文
floor(x[, N])引数
x— 丸める対象の値。Float*またはDecimal*または(U)Int*N— 任意。丸める小数点以下の桁数です。デフォルトは 0 で、この場合は整数に丸められます。負の値も指定できます。(U)Int*
戻り値
x と同じ型の、丸められた数値を返します。Float* または Decimal* または (U)Int*
例
使用例
SELECT floor(123.45, 1) AS rounded┌─rounded─┐
│ 123.4 │
└─────────┘負の精度指定
SELECT floor(123.45, -1)┌─floor(123.45, -1)─┐
│ 120 │
└───────────────────┘round
導入バージョン: v1.1.0
値を、指定した小数点以下桁数 N に丸めます。
N > 0の場合、関数は小数点の右側で丸めます。N < 0の場合、関数は小数点の左側で丸めます。N = 0の場合、関数は最も近い整数に丸めます。
この関数は、指定した桁で最も近い値を返します。
入力値が隣接する 2 つの数値から等距離にある場合、Float* 入力には銀行家の丸めを使用し、それ以外の数値型 (Decimal*) では 0 から遠ざかる方向に丸めます。
丸めによってオーバーフローが発生する場合 (たとえば round(255, -1)) 、結果は未定義です。
構文
round(x[, N])引数
戻り値
x と同じ型の丸められた数値を返します。Float*、Decimal*、または (U)Int*
例
Float 型の入力
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;┌───x─┬─round(x)─┐
│ 0 │ 0 │
│ 0.5 │ 0 │
│ 1 │ 1 │
└─────┴──────────┘10進数入力
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
導入バージョン: v1.1.0
人間の年齢を表す数値を受け取り、標準的な年齢区分と照らし合わせて、その数値が含まれる範囲の上限値または下限値を返します。
age < 1の場合は0を返します。1 ≤ age ≤ 17の場合は17を返します。18 ≤ age ≤ 24の場合は18を返します。25 ≤ age ≤ 34の場合は25を返します。35 ≤ age ≤ 44の場合は35を返します。45 ≤ age ≤ 54の場合は45を返します。age ≥ 55の場合は55を返します。
構文
roundAge(num)引数
戻り値
age が属する範囲の上限または下限の年齢を返します。UInt8
例
使用例
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
導入バージョン: v20.1.0
数値を指定した小数点位置 N に丸めます。
丸め対象の値が 2 つの数のちょうど中間にある場合、この関数では 銀行家の丸め と呼ばれる丸め方式を使用します。これは、IEEE 754 で定義されている浮動小数点数のデフォルトの丸め方式です。
N > 0の場合、関数は小数点以下を丸めますN < 0の場合、関数は小数点より左側を丸めますN = 0の場合、関数は最も近い整数に丸めます
構文
roundBankers(x[, N])引数
戻り値
銀行家の丸めで丸めた値を返します。(U)Int* または Decimal* または Float*
例
基本的な使い方
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
導入バージョン: v20.1.0
数値を、指定した配列内の要素に向かって切り下げます。 値が下限より小さい場合は、下限値が返されます。
構文
roundDown(num, arr)引数
num— 切り下げる対象の数値。(U)Int*またはDecimal*またはFloat*arr—numを切り下げる基準となる要素の Array。Array((U)Int*)またはArray(Float*)
戻り値
arr の要素まで切り下げた数値を返します。値が最小の境界値より小さい場合は、最小の境界値が返されます。(U)Int* または Float*
例
使用例
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
導入バージョン: v1.1.0
数値を、一般的によく使われる期間の値 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000 のうち、直近のより小さい値に切り下げます。
数値が 1 未満の場合は、0 を返します。
構文
roundDuration(num)引数
戻り値
num < 1 の場合は 0 を返します。それ以外の場合は、1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000 のいずれかを返します。UInt16
例
使用例
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
導入バージョン: v1.1.0
数値を、最も近い (0 以上の整数の) 2 のべき乗へ切り下げます。
数値が 1 未満の場合は、0 を返します。
構文
roundToExp2(num)引数
戻り値
num を、最も近い (0 以上の整数の) 2 のべき乗に切り下げて返します。num < 1 の場合は 0 を返します。(U)Int* または Float*
例
使用例
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
導入バージョン: v1.1.0
floor と似ていますが、x の絶対値以下で、絶対値が最大となる丸め後の数値を返します。
構文
truncate(x[, N])別名: truncate
引数
戻り値
x と同じ型の、丸められた数値を返します。Float* または Decimal* または (U)Int*
例
基本的な使い方
SELECT truncate(123.499, 1) AS res;┌───res─┐
│ 123.4 │
└───────┘