Esta sección ha sido analizado por expertos para asegurar la exactitud de nuestra esta reseña.
Solución:
Puede usar la función NULLIF, por ejemplo
something/NULLIF(column_name,0)
Si el valor de column_name
es 0 – el resultado de toda la expresión será NULL
Ya que count()
nunca regresa NULL
(a diferencia de otras funciones agregadas), solo tiene que capturar el 0
caso (que es el único caso problemático de todos modos):
CASE count(column_name)
WHEN 0 THEN 1
ELSE count(column_name)
END
Citando el manual sobre funciones agregadas:
Cabe señalar que a excepción de
count
estas funciones devuelven un
null valor cuando no hay filas seleccionadas.
Me doy cuenta de que esta es una vieja pregunta, pero otra solución sería hacer uso de la mayor función:
greatest( count(column_name), 1 ) -- NULL and 0 are valid argument values
Nota:
Mi preferencia sería devolver un NULL, como en la respuesta de Erwin y Yuriy, o resolver esto lógicamente detectando que el valor es 0
antes de la operación de división, y volviendo 0
. De lo contrario, los datos pueden tergiversarse utilizando 1
.