1

我有下表:

avg_duration BIGINT UNSIGNED,
count BIGINT UNSIGNED

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

4

1 回答 1

0

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

于 2013-03-20T10:33:48.317 回答