SQL Server在计算平均值时给出算术溢出

我有一个整数列,其中有一些相当大的数字表。 我试图平均一些价值在这个有时它工作的其他时候,它给这个错误

“将算术溢出错误转换为数据types为int的expression式”

我已经把它分解了,这个示例产生了错误

create table LargeNumbers (number int) insert into LargeNumbers values (100000000) -- X 30 select avg(number) from LargeNumbers 

有谁知道我可以得到这个来计算平均值?

内部SQL Server正在汇总这些值(以后再除以计数),并将它们存储在列数据types中 – 在这种情况下是一个int,它不足以保存总和 – 如果您先将值作为bigint它会将这些值同时存储在一个bigint中 – 这可能足够大,然后可以进行平均计算。

 select avg(cast(number as bigint)) from LargeNumbers 

您需要将数字强制转换为比int更大的数字,比如整数,因为要计算平均值SQL将所有值相加为int,这就是溢出的位置。