sumWithOverflow
数値の合計を計算し、結果には入力パラメータと同じデータ型を使用します。このデータ型の最大値を超える場合は、オーバーフロー計算を行います。
数値に対してのみ動作します。
構文
sumWithOverflow(num)
パラメータ
返される値
例
まず、employees というテーブルを作成し、いくつかの架空の従業員データを挿入します。この例では、合計がオーバーフローを引き起こす可能性のある UInt16 型の salary を選択します。
クエリ:
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               │
   └─────────────┴──────────┴─────────────────────────┴──────────────────────┘