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