メインコンテンツまでスキップ
メインコンテンツまでスキップ

sumWithOverflow

数値の合計を計算し、結果のデータ型は入力パラメータと同じです。このデータ型の最大値を超える合計が計算されると、オーバーフローが発生します。

数値のみに対応しています。

構文

sumWithOverflow(num)

パラメータ

返される値

まず、employees というテーブルを作成し、いくつかの架空の従業員データを挿入します。この例では、salaryUInt16 として選択し、これらの値の合計がオーバーフローを発生させる可能性があります。

クエリ:

CREATE TABLE employees
(
    `id` UInt32,
    `name` String,
    `monthly_salary` UInt16
)
ENGINE = Log
SELECT
    sum(monthly_salary) AS no_overflow,
    sumWithOverflow(monthly_salary) AS overflow,
    toTypeName(no_overflow),
    toTypeName(overflow)
FROM employees

sum および sumWithOverflow 関数を使用して従業員の給与の総額を問い合わせ、toTypeName 関数を使用してその型を表示します。 sum 関数の結果の型は UInt64 で、合計を保持するのに十分な大きさですが、sumWithOverflow の結果の型は UInt16 のままです。

クエリ:

SELECT 
    sum(monthly_salary) AS no_overflow,
    sumWithOverflow(monthly_salary) AS overflow,
    toTypeName(no_overflow),
    toTypeName(overflow),    
FROM employees;

結果:

   ┌─no_overflow─┬─overflow─┬─toTypeName(no_overflow)─┬─toTypeName(overflow)─┐
1. │      118700 │    53164 │ UInt64                  │ UInt16               │
   └─────────────┴──────────┴─────────────────────────┴──────────────────────┘