22012: division_by_zero
PostgreSQLNe demek?
Bir aritmetik ifadede sıfıra bölme (ya da sıfırla modulo) yapılmaya çalışıldı. PostgreSQL sıfıra bölmeye izin vermez ve sorguyu durdurur.
Neden olur?
Bölen sütun/ifadenin değerinin 0 olması; oran/yüzde hesabında paydanın sıfır çıkması; COUNT ya da SUM sonucunun sıfır olduğu bir bölme; filtrelenmemiş veride beklenmedik sıfır değerler.
Nasıl çözülür?
Payda sıfır olduğunda NULL döndürmek için NULLIF kullanın: pay / NULLIF(payda, 0). Sonucu isterseniz COALESCE ile varsayılana çevirin: COALESCE(pay / NULLIF(payda,0), 0). Ya da CASE WHEN payda = 0 THEN NULL ELSE pay/payda END kullanın. Verideki sıfır durumlarını önceden filtreleyin.