メインコンテンツへスキップ
以下のドキュメントは、system.functions システムテーブルから生成されています

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* 基本的な使い方
Query
SELECT ceiling(123.45, 1) AS rounded
Response
┌─rounded─┐
│   123.5 │
└─────────┘
負の精度指定
Query
SELECT ceiling(123.45, -1)
Response
┌─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* 使用例
Query
SELECT floor(123.45, 1) AS rounded
Response
┌─rounded─┐
│   123.4 │
└─────────┘
負の精度指定
Query
SELECT floor(123.45, -1)
Response
┌─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*
  • N — 任意。丸める小数点以下の桁数。デフォルトは 0 です。(U)Int*
戻り値 x と同じ型の丸められた数値を返します。Float*Decimal*、または (U)Int* Float 型の入力
Query
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;
Response
┌───x─┬─round(x)─┐
│   0 │        0 │
│ 0.5 │        0 │
│   1 │        1 │
└─────┴──────────┘
10進数入力
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

導入バージョン: 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 — 年齢 (年単位) を表す数値。(U)Int* または Float*
戻り値 age が属する範囲の上限または下限の年齢を返します。UInt8 使用例
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

導入バージョン: v20.1.0 数値を指定した小数点位置 N に丸めます。 丸め対象の値が 2 つの数のちょうど中間にある場合、この関数では 銀行家の丸め と呼ばれる丸め方式を使用します。これは、IEEE 754 で定義されている浮動小数点数のデフォルトの丸め方式です。
  • N > 0 の場合、関数は小数点以下を丸めます
  • N < 0 の場合、関数は小数点より左側を丸めます
  • N = 0 の場合、関数は最も近い整数に丸めます
注意
  • 丸め対象の値が 2 つの数のちょうど中間にある場合、指定した小数点位置で最も近い偶数の桁に丸められます。 たとえば、3.54 に切り上げられ、2.52 に切り下げられます。
  • round 関数は、浮動小数点数に対して同じ丸めを行います。
  • roundBankers 関数は整数も同様に丸めます。たとえば、roundBankers(45, -1) = 40 です。
  • それ以外の場合、この関数は数値を最も近い整数に丸めます。
数値の加算や減算には 銀行家の丸め を使用してください銀行家の丸め を使用すると、数値の丸めが、それらの加算や減算の結果に与える影響を抑えられます。たとえば、1.5, 2.5, 3.5, 4.5 を異なる丸め方法で合計すると、次のようになります。
  • 丸めなし: 1.5 + 2.5 + 3.5 + 4.5 = 12
  • 銀行家の丸め: 2 + 2 + 4 + 4 = 12
  • 最も近い整数への丸め: 2 + 3 + 4 + 5 = 14
構文
roundBankers(x[, N])
引数
  • x — 丸め対象の数値。(U)Int* または Decimal* または Float*
  • [, N] — 省略可能。丸める小数点以下の桁数です。デフォルト値は 0 です。(U)Int*
戻り値 銀行家の丸めで丸めた値を返します。(U)Int* または Decimal* または Float* 基本的な使い方
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

導入バージョン: v20.1.0 数値を、指定した配列内の要素に向かって切り下げます。 値が下限より小さい場合は、下限値が返されます。 構文
roundDown(num, arr)
引数 戻り値 arr の要素まで切り下げた数値を返します。値が最小の境界値より小さい場合は、最小の境界値が返されます。(U)Int* または Float* 使用例
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

導入バージョン: v1.1.0 数値を、一般的によく使われる期間の値 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000 のうち、直近のより小さい値に切り下げます。 数値が 1 未満の場合は、0 を返します。 構文
roundDuration(num)
引数
  • num — 一般的な期間の集合に含まれるいずれかの値に丸める対象の数値。(U)Int* または Float*
戻り値 num < 1 の場合は 0 を返します。それ以外の場合は、1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000 のいずれかを返します。UInt16 使用例
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

導入バージョン: v1.1.0 数値を、最も近い (0 以上の整数の) 2 のべき乗へ切り下げます。 数値が 1 未満の場合は、0 を返します。 構文
roundToExp2(num)
引数 戻り値 num を、最も近い (0 以上の整数の) 2 のべき乗に切り下げて返します。num < 1 の場合は 0 を返します。(U)Int* または Float* 使用例
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

導入バージョン: v1.1.0 floor と似ていますが、x の絶対値以下で、絶対値が最大となる丸め後の数値を返します。 構文
truncate(x[, N])
別名: truncate 引数
  • x — 丸める対象の値。Float* または Decimal* または (U)Int*
  • N — オプション。丸める小数点以下の桁数。デフォルトは 0 で、この場合は整数に丸められます。(U)Int*
戻り値 x と同じ型の、丸められた数値を返します。Float* または Decimal* または (U)Int* 基本的な使い方
Query
SELECT truncate(123.499, 1) AS res;
Response
┌───res─┐
│ 123.4 │
└───────┘
最終更新日 2026年6月10日