Solución:
Para evitar un error de “División por cero” lo hemos programado así:
Select Case when divisor=0 then null
Else dividend / divisor
End ,,,
Pero aquí hay una forma mucho mejor de hacerlo:
Select dividend / NULLIF(divisor, 0) ...
Ahora el único problema es recordar el bit NullIf, si utilizo la clave “https://foroayuda.es/”.
En caso de que desee devolver cero, en caso de que suceda una devisión cero, puede usar:
SELECT COALESCE(dividend / NULLIF(divisor,0), 0) FROM sometable
Por cada divisor que sea cero, obtendrá un cero en el conjunto de resultados.
Esta parecía ser la mejor solución para mi situación cuando trataba de abordar la división por cero, lo que sucede en mis datos.
Suponga que desea calcular las proporciones entre hombres y mujeres para varios clubes escolares, pero descubre que la siguiente consulta falla y emite un error de división por cero cuando intenta calcular la proporción para el Club El Señor de los Anillos, que no tiene mujeres. :
SELECT club_id, males, females, males/females AS ratio
FROM school_clubs;
Puedes usar la función NULLIF
para evitar la división por cero. NULLIF
compara dos expresiones y devuelve nulo si son iguales o la primera expresión en caso contrario.
Reescribe la consulta como:
SELECT club_id, males, females, males/NULLIF(females, 0) AS ratio
FROM school_clubs;
Cualquier número dividido por NULL
da NULL
y no se genera ningún error.