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