반응형
평균을 계산할 때 산술 오버플로를 제공하는 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
반응형
'programing' 카테고리의 다른 글
| Android Studio 렌더링 문제 (0) | 2023.08.30 |
|---|---|
| Java에서 다음 쿼리를 실행할 수 없습니다. (0) | 2023.08.30 |
| Java와 String()의 신속한 동등성 (0) | 2023.08.30 |
| '베이스에 대해 해결'하기 위해 거짓을 전달하는 것과 참을 전달하는 것의 차이점은 무엇입니까?NSURL 구성 요소 인스턴스를 초기화할 때 'URL'을 선택하시겠습니까? (0) | 2023.08.30 |
| Microsoft Excel에서 두 날짜 간의 차이를 분 단위로 얻는 방법은 무엇입니까? (0) | 2023.08.30 |