Rails ActiveRecord查询:计数,组和额外列

时间:2015-02-27 22:10:51

标签: ruby-on-rails activerecord count group-by greatest-n-per-group

我有一个名为service的模型,每个服务都有一个或多个usage特定song(加入usage.song_id)。我想搜索一下用法并找到最常见的歌曲:

Usage.joins(:song).group(:song_id, :song_name).count :song_id

我想要按计数值排序的那些,所以我添加(在.count之前)

.order("count_song_id DESC")

但是现在我还想要最近使用该歌曲的日期,这是存储在service模型中的一个细节。所以我知道我需要添加到我的加入中:

Usage.joins(:song, :service)

所以基本上现在我有:

Usage.joins(:song, :service).group(:song_id, :song_name).order("count_song_id DESC").count :song_id

但是如何获得输出中每首歌的最近日期?

更新:理想情况下,我正在寻找类似的输出:

[
  :song_id,
  :song_name,
  count_of_this_songs_usages,
  most_recent_date_this_song_was_used
]

1 个答案:

答案 0 :(得分:2)

好吧,我正在尝试这个。 select语句中的两个函数是否实际正常工作还有待观察。

Usage.select("MAX(services.date)", :song_name, "COUNT(song_id) AS count_song_id").joins(:service, :song).group(:song_name).order("count_song_id DESC")