From f5a79f16b66feb7b65ee3134d32a4b7a487963a5 Mon Sep 17 00:00:00 2001 From: PhilRunninger Date: Thu, 31 Aug 2023 09:51:30 -0400 Subject: [PATCH] Fix divide by zero errors when no adjustment can be made. --- route_sql/addmonth_vupd.sql | 4 ++-- route_sql/scale_pd.sql | 4 ++-- route_sql/scale_vupd.sql | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/route_sql/addmonth_vupd.sql b/route_sql/addmonth_vupd.sql index 32b5031..7f8ba23 100644 --- a/route_sql/addmonth_vupd.sql +++ b/route_sql/addmonth_vupd.sql @@ -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 diff --git a/route_sql/scale_pd.sql b/route_sql/scale_pd.sql index 2bc422f..182ec5b 100644 --- a/route_sql/scale_pd.sql +++ b/route_sql/scale_pd.sql @@ -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 diff --git a/route_sql/scale_vupd.sql b/route_sql/scale_vupd.sql index e88acd9..2a4e607 100644 --- a/route_sql/scale_vupd.sql +++ b/route_sql/scale_vupd.sql @@ -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