SUM 聚集函数

SUM 函数返回一组数字的总和。

注: 该函数的结果可能受 large_aggregation 配置参数的启用影响。
Read syntax diagramSkip visual syntax diagramSUM(ALLDISTINCTexpression)

该模式是 SYSIBM。

expression
返回任何内置数值数据类型的值的表达式。
结果的数据类型与输入表达式的数据类型相同,但有以下例外:
  • 如果输入表达式的数据类型为 SMALLINT ,那么结果的数据类型为 INTEGER。
  • 如果输入表达式的数据类型为单精度浮点 (REAL) ,那么结果的数据类型为双精度浮点 (DOUBLE)。
  • 如果输入表达式的数据类型为 DECFLOAT (n) ,那么结果的数据类型为 DECFLOAT (34)。
  • 如果输入表达式是精度为 p 且小数位为 s的 DECIMAL 值,那么结果是小数位为 s 且精度如下的 DECIMAL:
    表 1. 具有 DECIMAL 输入的 SUM 聚集函数的结果精度
    DECIMAL 算术方式 1 p 结果精度
    缺省值 不适用 31
    DEC15 ≤15 15
    DEC15 >15 MIN(31,p+10)
    DEC31 不适用 MIN(31,p+10)
    注:
    1. 这些方式由 dec_arithmetic 配置参数确定。

该函数将应用于因为消除空值而从自变量值中派生出来的值集合。 如果指定了 DISTINCT ,那么还会消除冗余的重复值。 为数字上相等的十进制浮点值解释 DISTINCT 子句时,不考虑该值中的有效位数。 例如,十进制浮点数 123.00 与十进制浮点数 123 不同。 从查询返回的数字表示将是迂到的任何一种表示 (例如, 123.00 或 123)。

结果可以为空值。 如果函数应用于空集,那么结果为空值。 否则,结果是集合中的值的总和。

未定义聚集值的顺序,但每个中间结果必须在结果数据类型的范围内。

示例

使用 EMPLOYEE 表,将主变量JOB_花红 (十进制 (9, $TAG1)) 设置为支付给职员的总花红 (花红) (JOB = '秘书')。
   SELECT SUM(BONUS)
     INTO :JOB_BONUS
     FROM EMPLOYEE
     WHERE JOB = 'CLERK'
导致在使用样本表时将JOB_奖金设置为 2800。