ceiling 関数

適用対象:check marked yes Databricks SQL のチェックをオン Databricks Runtime 11.3 LTS 以上

小数点に対して expr 桁まで丸められた targetScale よりは小さくない最小数を返します。 この関数は、 ceil 関数のシノニムです。

構文

ceiling(expr [, targetScale])

引数

  • expr: 数値に評価される式。
  • targetScale: 切り上げる小数点以下の桁数を指定する -38 よりも大きい省略可能な整数リテラル。

戻り値

targetScale が指定されていない場合:

  • exprDECIMAL(p, s) の場合、DECIMAL(p - s + 1, 0) を返します。
  • その他のすべての場合は、BIGINT を返します。

targetScale が指定され、expr が次の場合:

  • TINYINT

    DECIMAL(p, 0)p = max(3, -targetScale + 1) を返します。

  • SMALLINT

    DECIMAL(p, 0)p = max(5, -targetScale + 1) を返します。

  • INTEGER

    DECIMAL(p, 0)p = max(10, -targetScale + 1)) を返します。

  • BIGINT

    DECIMAL(p, 0)p = max(20, -targetScale + 1)) を返します。

  • FLOAT

    DECIMAL(p, s) および p = max(14, -targetScale + 1))s = min(7, max(0, targetScale)) を返します

  • DOUBLE

    DECIMAL(p, s) および p = max(30, -targetScale + 1))s = min(15, max(0, targetScale)) を返します

  • DECIMAL(p_in, s_in)

    DECIMAL(p, s) および p = max(p_in - s_in + 1, -targetScale + 1))s = min(s_in, max(0, targetScale)) を返します

targetScale が負の場合、小数点の左側の -targetScale 桁に丸められます。

targetScale の既定値は 0 で、次に大きい整数に切り上げられます。

整数入力型targetScale を指定すると、結果が出力の種類をオーバーフローした場合、Azure Databricksは ARITHMETIC_OVERFLOW を発生させます。

Warnung

Databricks ランタイムで 、spark.sql.ansi.enabledfalse場合、オーバーフローによってエラーは発生せず、代わりに結果が "ラップ" されます。

一般的なエラー状態

> SELECT ceiling(-0.1);
 0

> SELECT ceiling(5);
 5

> SELECT ceiling(5.4);
 6

> SELECT ceiling(3345.1, -2);
 3400

> SELECT ceiling(-12.345, 1);
 -12.3

-- Rounding 127 to the nearest 10 produces 130, which overflows TINYINT.
> SELECT ceiling(cast(127 AS TINYINT), -1);
  Error: ARITHMETIC_OVERFLOW