我有一个带有整数列的表,其中有一些相当大的数字。我试图在其中平均一些值,有时它在其他时间起作用,它给出了这个错误
“将表达式转换为数据类型int的算术溢出错误。”
我将其分解,此示例产生了错误
create table LargeNumbers (number int)
insert into LargeNumbers values (100000000) -- X 30
select avg(number) from LargeNumbers
有谁知道我该如何计算平均值?
最佳答案
在内部,SQL Server正在对值求和(以供以后除以计数),并将它们存储在column数据类型中(在这种情况下为int)-如果首先将值转换为bigint,则其大小不足以容纳和。它将求和的值也存储在bigint中-可能足够大,然后可以进行平均计算。
select avg(cast(number as bigint)) from LargeNumbers