평균이나 비율을 계산하다 보면, 분모가 0인 경우가 종종 발생합니다.
이때 단순히 나눗셈을 하면 SQL은 에러를 발생시킵니다.
NULLIF(expr1, expr2)
두 값이 같으면 NULL 반환
다르면 expr1 반환
즉, NULLIF(order_count, 0)은 order_count가 0일 때 NULL을 반환합니다.
이를 분모에 사용하면 0으로 나누기 에러를 방지할 수 있습니다.
| user_id | total_amount | order_count |
|---|---|---|
| 1 | 1000 | 5 |
| 2 | 500 | 0 |
| 3 | 1200 | 3 |
SELECT user_id
, total_amount / NULLIF(order_count, 0) AS avg_amount
FROM orders;
| user_id | avg_amount |
|---|---|
| 1 | 200 |
| 2 | NULL |
| 3 | 400 |
2번 유저는 order_count = 0이지만, 에러 대신 NULL 처리됩니다.
✔ NULLIF로 “0으로 나누기” 에러를 간단히 차단할 수 있습니다.