使用SQL聚合函数时修复数据截断

时间:2013-03-20 10:14:18

标签: mysql sql aggregate-functions

我有下表:

avg_duration BIGINT UNSIGNED,
count BIGINT UNSIGNED

我正在计算许多记录的加权平均持续时间,如下所示:SUM({avg_duration}*{count})/SUM({count})。 问题是当有大量记录和足够大的count值时,SUM({avg_duration}*{count})部分变得太大而我得到数据截断异常。 我考虑过将DOUBLE用于列类型而不是BIGINT。 有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

您可以在查询中转换为DOUBLE,而不是更改表格定义,例如SUM((CONVERT(DOUBLE, avg_duration) * CONVERT(DOUBLE, count)) / SUM(CONVERT(DOUBLE, count))