入力パラメータと同じデータ型で結果を返す形で数値の合計を計算します。合計がこのデータ型の最大値を超えた場合は、オーバーフローさせて計算します。
数値型に対してのみ使用できます。
構文
パラメータ
戻り値
例
まずテーブル employees を作成し、架空の従業員データを挿入します。この例では、salary を UInt16 として指定し、これらの値の合計によってオーバーフローが発生する可能性があるようにします。
クエリ:
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 │
└─────────────┴──────────┴─────────────────────────┴──────────────────────┘