Fix divide by zero errors when no adjustment can be made.

This commit is contained in:
PhilRunninger 2023-08-31 09:51:30 -04:00
parent 80c8b5b159
commit f5a79f16b6
3 changed files with 6 additions and 6 deletions

View File

@ -405,9 +405,9 @@ WHERE
END zero_values
,CASE
WHEN (SELECT coalesce(sum(value_loc),0) FROM volume) = 0 AND (SELECT coalesce(sum(units),0) FROM volume) = 0 -- Split pincr evenly between rows.
THEN (SELECT pincr::numeric FROM target) / (SELECT count(*) FROM volume)
THEN (SELECT pincr::numeric FROM target) / (SELECT nullif(count(*),0) FROM volume)
WHEN (SELECT coalesce(sum(value_loc),0) FROM volume) = 0 -- Get a per-unit pincr value
THEN (SELECT pincr::numeric FROM target) / (SELECT sum(units) FROM volume)
THEN (SELECT pincr::numeric FROM target) / (SELECT nullif(sum(units),0) FROM volume)
ELSE -- Find percent change for existing value_loc
(SELECT pincr::numeric FROM target) / (SELECT nullif(sum(value_loc * r_rate),0) FROM volume)
END factor

View File

@ -109,9 +109,9 @@ target AS (select target_increment incr)
END zero_values
,CASE
WHEN (SELECT coalesce(sum(value_loc),0) FROM basemix) = 0 AND (SELECT coalesce(sum(units),0) FROM basemix) = 0 -- Split incr evenly between rows.
THEN (SELECT incr::numeric FROM target) / (SELECT count(*) FROM basemix)
THEN (SELECT incr::numeric FROM target) / (SELECT nullif(count(*),0) FROM basemix)
WHEN (SELECT coalesce(sum(value_loc),0) FROM basemix) = 0 -- Get a per-unit incr value
THEN (SELECT incr::numeric FROM target) / (SELECT sum(units) FROM basemix)
THEN (SELECT incr::numeric FROM target) / (SELECT nullif(sum(units),0) FROM basemix)
ELSE -- Find percent change for existing value_loc
(SELECT incr::numeric FROM target) / (SELECT nullif(sum(value_loc * r_rate),0) FROM basemix)
END factor

View File

@ -242,9 +242,9 @@ FROM
END zero_values
,CASE
WHEN (SELECT coalesce(sum(value_loc),0) FROM volume) = 0 AND (SELECT coalesce(sum(units),0) FROM volume) = 0 -- Split pincr evenly between rows.
THEN (SELECT pincr::numeric FROM target) / (SELECT count(*) FROM volume)
THEN (SELECT pincr::numeric FROM target) / (SELECT nullif(count(*),0) FROM volume)
WHEN (SELECT coalesce(sum(value_loc),0) FROM volume) = 0 -- Get a per-unit pincr value
THEN (SELECT pincr::numeric FROM target) / (SELECT sum(units) FROM volume)
THEN (SELECT pincr::numeric FROM target) / (SELECT nullif(sum(units),0) FROM volume)
ELSE -- Find percent change for existing value_loc
(SELECT pincr::numeric FROM target) / (SELECT nullif(sum(value_loc * r_rate),0) FROM volume)
END factor