Fix retention rate computation (#16854)

th-downstream
Claire 3 years ago committed by GitHub
parent db7d377ea1
commit bf1edcb0ef

@ -29,7 +29,7 @@ class Admin::Metrics::Retention
INNER JOIN new_users on new_users.id = users.id INNER JOIN new_users on new_users.id = users.id
WHERE date_trunc($3, users.current_sign_in_at) >= axis.retention_period 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 retained_users
) )
FROM ( FROM (
@ -55,11 +55,11 @@ class Admin::Metrics::Retention
arr << current_cohort arr << current_cohort
end end
value, percent = row['retention_value_and_percent'].delete('{}').split(',') value, rate = row['retention_value_and_rate'].delete('{}').split(',')
current_cohort.data << CohortData.new( current_cohort.data << CohortData.new(
date: row['retention_period'], date: row['retention_period'],
percent: percent.to_f, percent: rate.to_f,
value: value.to_s value: value.to_s
) )
end end

Loading…
Cancel
Save