Divide by zero error encountered 이 오류는 분모가 0이 들어갈 때 나누기를 시도할 때 발생하는 에러임!
빅쿼리 같은 경우 SAFE_DIVIDE라는 함수가 있어서 아주 편하게 사용할 수 있는데 ... 😥
SELECT IFNULL(SAFE_DIVIDE(a,b),0) AS safe_example
FROM sample_table
MsSQL에서 사용할려하니 당연히 없는 함수라 뜬다. 그럼 어떻게 사용하면 될까 ?
1.case when 으로 0일 때 null 처리 해주기.
SELECT CASE WHEN b=0 THEN null
ELSE a / b
END AS sample
FROM sample_table
분모가 0이 될 때, case when으로 null로 바꿔주면 계산 값이 null로 뜨며 제대로 작동한다.
2.NULL IF 로 b가 0일 때 null 처리 해주기
Select a / NULLIF(b, 0) AS sample
FROM sample_table
CASE WHEN을 사용하면 쿼리가 불필요하게 길어지므로 2번을 추천함!
b가 0일 때 NULLIF 함수로 NULL처리를 해주면 간단하게 위에서 주저리 설명한 CASE WHEN 절을 함수 하나로 대치할 수 있다.
*ISNULL vs NULLIF
- ISNULL은 NULL 값에 대한 대체 값 지정
- NULLIF는 두 값이 같을 때 NULL을 반환
끝! 이야호 엄청 쉽구욘
레퍼런스
https://stackoverflow.com/questions/861778/how-to-avoid-the-divide-by-zero-error-in-sql
'데이터베이스 > SQL' 카테고리의 다른 글
[MSSQL] 해당 날짜 월의 1일에 해당하는 날짜 추출하기 / 월 추출 (0) | 2024.06.12 |
---|---|
[MSSQL] 해당 날짜 주차의 월요일에 해당하는 날짜 추출하기 (0) | 2024.06.12 |
[Bigquery] Merge into 사용 가이드 (0) | 2023.09.01 |
[Bigquery] Bigquery SQL로 ML 모델링 A to Z (0) | 2023.08.23 |
[BigQuery] 중첩된 필드 조회 (event_params.key.value) (0) | 2023.01.19 |
댓글