跳到主要内容

try_sum:安全计算总和

速查结论

try_sum(expr) 是 Spark SQL 中用于从一组值中计算总和,溢出时返回 NULL 而非报错的聚合函数。

语法

try_sum(expr)

参数说明

参数说明
expr需要计算总和的表达式,可以是数值列或数值表达式

功能说明

try_sum(expr)sum 函数类似,从一组值中计算总和。区别在于:当计算结果发生溢出时,try_sum 返回 NULL 而不会抛出异常。

示例

> SELECT try_sum(col) FROM VALUES (5), (10), (15) AS tab(col);
30
> SELECT try_sum(col) FROM VALUES (NULL), (10), (15) AS tab(col);
25
> SELECT try_sum(col) FROM VALUES (NULL), (NULL) AS tab(col);
NULL
> SELECT try_sum(col) FROM VALUES (9223372036854775807L), (1L) AS tab(col);
NULL

常见报错与避坑指南

  • 大数值溢出:当求和结果超过 BIGINT 最大值(9223372036854775807)时,try_sum 返回 NULL。对于特大数值场景,可考虑使用 try_sum 配合 DECIMAL 类型避免溢出。
  • 全 NULL 返回 NULL:当所有输入值均为 NULL 时,try_sum 返回 NULL,与 sum 行为一致。
  • 与 sum 的区别:仅在溢出行为上有差异。普通业务场景使用 sum 即可,处理超大数值或不信任数据时使用 try_sum

Since: 3.3.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看