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

Rails ActiveRecord Query: Count, group and extra column

我有一个名为 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
]

好吧,我正在尝试这个。 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")