我有一个带有整数列的表,其中包含一些相当大的数字.我试图在这个中平均一些值,有时它可以在其他时候产生这个错误
"将表达式转换为数据类型int的算术溢出错误."
我把它分解了,这个样本产生了错误
create table LargeNumbers (number int)
insert into LargeNumbers values (100000000) -- X 30
select avg(number) from LargeNumbers
Run Code Online (Sandbox Code Playgroud)
有谁知道如何计算平均值?
Tet*_*ron 75
SQL Server内部对值进行求和(以后除以计数)并将它们存储在列数据类型中 - 在本例中为int - 其大小不足以保存总和 - 如果先将值转换为bigint它会将值存储在bigint中的值相加 - 这可能足够大,然后可以进行平均计算.
select avg(cast(number as bigint)) from LargeNumbers
Run Code Online (Sandbox Code Playgroud)