ruby-on-rails – 使用ActiveRecord获取组内最新记录的平均值
发布时间:2020-12-17 02:25:39 所属栏目:百科 来源:网络整理
导读:我有以下查询,它会计算给定名称和联盟的所有团队的平均展示次数: @all_team_avg = NielsenData .where('name = ? and league = ?',name,league) .average('impressions') .to_i 但是,每个名称/联盟/团队组合可以有多个条目.我需要修改查询以仅通过created_a
我有以下查询,它会计算给定名称和联盟的所有团队的平均展示次数:
@all_team_avg = NielsenData .where('name = ? and league = ?',name,league) .average('impressions') .to_i 但是,每个名称/联盟/团队组合可以有多个条目.我需要修改查询以仅通过created_at平均最近的记录. 在this answer的帮助下,我想出了一个查询,它得到了我需要的结果(我会用应用程序中的名称和联盟替换硬编码的WHERE子句),但它似乎过于复杂,我不知道如何翻译很好地进入ActiveRecord: SELECT avg(sub.impressions) FROM ( WITH summary AS ( SELECT n.team,n.name,n.league,n.impressions,n.created_at,ROW_NUMBER() OVER(PARTITION BY n.team ORDER BY n.created_at DESC) AS rowcount FROM nielsen_data n WHERE n.name = 'Social Media - Twitter Followers' AND n.league = 'National Football League' ) SELECT s.* FROM summary s WHERE s.rowcount = 1) sub; 如何使用ActiveRecord重写此查询或以更简单的方式获得相同的结果? 解决方法
当你拥有的只是一把锤子时,一切看起来像钉子.
有时,原始SQL是最佳选择.你可以这样做: @all_team_avg = NielsenData.find_by_sql("...your_sql_statement_here...") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |