programing

평균을 계산할 때 산술 오버플로를 제공하는 SQL Server

telebox 2023. 8. 30. 21:34
반응형

평균을 계산할 때 산술 오버플로를 제공하는 SQL Server

꽤 큰 숫자가 들어 있는 정수 열이 있는 테이블이 있습니다.나는 이것의 몇 가지 값을 평균하려고 노력하고 있고 때때로 그것은 다른 시간에 작동하고 이 오류를 줍니다.

"식을 데이터 형식 int로 변환하는 동안 산술 오버플로 오류가 발생했습니다."

제가 그것을 분해했고 이 샘플은 오류를 생성합니다.

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

평균을 계산하는 방법을 아는 사람이 있습니까?

SQL Server는 내부적으로 값을 합계하고(나중에 카운트로 나누기 위해) 열 데이터 유형에 값을 저장합니다(이 경우에는 int(합을 포함할 만큼 크지 않음). 먼저 값을 bigint로 캐스팅하면 해당 값도 bigint에 저장되는 값을 합계합니다(아마 충분히 클 것입니다).그러면 평균 계산이 진행될 수 있습니다.

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

큰 정수와 같이 int보다 큰 값에 숫자를 캐스팅해야 합니다. 평균 SQL은 모든 값을 int로 합하기 때문입니다. 여기서 오버플로우가 발생합니다.

언급URL : https://stackoverflow.com/questions/1197720/sql-server-giving-arithmetic-overflow-when-calculating-avg

반응형