使用ActiveRecord获取组内最新记录的平均值

时间:2016-03-16 17:23:13

标签: ruby-on-rails ruby postgresql activerecord rails-activerecord

我有以下查询,它会计算给定名称和联盟的所有团队的平均展示次数:

@all_team_avg = NielsenData
                  .where('name = ? and league = ?', name, league)
                  .average('impressions')
                  .to_i

但是,每个名称/联盟/团队组合可以有多个条目。我需要将查询修改为仅按created_at平均最近的记录。

this answer的帮助下,我想出了一个查询,它可以获得我需要的结果(我会用WHERE和{{1}替换硬编码的name子句在应用程序中),但它似乎过于复杂,我不知道如何很好地将它翻译成ActiveRecord:

league

如何使用ActiveRecord重写此查询或以更简单的方式获得相同的结果?

1 个答案:

答案 0 :(得分:3)

当你拥有的只是一把锤子时,一切看起来都像钉子。

有时,原始SQL是最佳选择。你可以这样做:

@all_team_avg = NielsenData.find_by_sql("...your_sql_statement_here...")