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 に答える