rails 3 group by and sum

前端 未结 2 1195
死守一世寂寞
死守一世寂寞 2020-12-16 00:00

I have the following model:

activity_types: id, name

activities: id, id_activity_type, occurrences, date (other fields)

The activities tab

相关标签:
2条回答
  • If the original query worked, then just try rewriting it with Rails 3 syntax:

    Activity.joins(:activity_types)
      .select("activity_types.id, activity_types.name, SUM(activities.occurrences) as occurrences")
      .group("activity_types.id, activity_types.name")
      .order("activity_types.id")
    
    0 讨论(0)
  • 2020-12-16 00:24

    Activity.joins(:activity_types).group('activity_types.name').sum(:occurrences)

    SELECT SUM(activities.occurrences) AS sum_occurrences, activity_types.name AS activity_types_name FROM activity_types INNER JOIN activity_types ON activity_types.id = activities.activity_types_id GROUP BY activity_types.name
    

    in case you needed an ordered hash based on activity_types.id and assuming activity_types_id is not needed as a part of hash key.

    Activity.joins(:activity_types).group('activity_types.name').order(:activity_types_id).sum(:occurrences)
    

    incase [activity_type_id, activity_types.name] needed as a part of key

    Activity.joins(:activity_types).group(:activity_types_id, 'activity_types.name').order(:activity_types_id).sum(:occurrences)
    
    0 讨论(0)
提交回复
热议问题