2013-03-20 103 views
0

时修复数据截断我有如下表:使用SQL聚合函数

avg_duration BIGINT UNSIGNED, 
count BIGINT UNSIGNED 

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

回答

0

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

+0

我会检查一下。绝对比改变表格定义更好。我仍然在寻找一些不太暴力的东西。但如果我很快没有得到更好的答案,我会接受你的。谢谢 – daramasala 2013-03-20 12:19:42