From a184c860ca90dec6a8db99d3d767e9786ae149c4 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 14 Oct 2021 22:20:37 +0200 Subject: [PATCH] Fix retention rate computation (#16854) --- app/lib/admin/metrics/retention.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/lib/admin/metrics/retention.rb b/app/lib/admin/metrics/retention.rb index 49ab891293..6b9dfde499 100644 --- a/app/lib/admin/metrics/retention.rb +++ b/app/lib/admin/metrics/retention.rb @@ -29,7 +29,7 @@ class Admin::Metrics::Retention INNER JOIN new_users on new_users.id = users.id WHERE date_trunc($3, users.current_sign_in_at) >= axis.retention_period ) - SELECT ARRAY[count(*), (count(*) + 1)::float / (SELECT count(*) + 1 FROM new_users)] AS retention_value_and_percent + SELECT ARRAY[count(*), (count(*))::float / (SELECT GREATEST(count(*), 1) FROM new_users)] AS retention_value_and_rate FROM retained_users ) FROM ( @@ -55,11 +55,11 @@ class Admin::Metrics::Retention arr << current_cohort end - value, percent = row['retention_value_and_percent'].delete('{}').split(',') + value, rate = row['retention_value_and_rate'].delete('{}').split(',') current_cohort.data << CohortData.new( date: row['retention_period'], - percent: percent.to_f, + percent: rate.to_f, value: value.to_s ) end