Skip to content

Instantly share code, notes, and snippets.

@jonahglover
Created May 9, 2016 22:16
Show Gist options
  • Save jonahglover/7f66d157bad2ae7b6ace099edaaba2ec to your computer and use it in GitHub Desktop.
Save jonahglover/7f66d157bad2ae7b6ace099edaaba2ec to your computer and use it in GitHub Desktop.
message unique open rate
def unique_open_rate
recipient_activities = recipient_messages.joins(:activities)
((recipient_activities.where("activities.activity_type = 'open'").distinct.count.to_f / recicipient_messages.count) * 100).round(2)
end
query
user.messages.select("messages.*,
COUNT(DISTINCT recicipient_messages.id) recipient_count,
COUNT(DISTINCT activities.id) total_activities,
COUNT(CASE WHEN activities.activity_type = 0 THEN 1 ELSE null END) as unique_opens,
COUNT(CASE WHEN activities.activity_type = 1 THEN 1 ELSE null END) as unique_views,
COUNT(CASE WHEN activities.activity_type = 2 THEN 1 ELSE null END) as unique_responses")
.joins(:video, recicipient_messages: :activities)
.group("messages.id")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment