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

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               │
   └─────────────┴──────────┴─────────────────────────┴──────────────────────┘