通过Rails中的SUM列获得最佳结果

时间:2013-01-05 01:16:20

标签: ruby-on-rails ruby-on-rails-3

我正在尝试在rails(通过ActiveRecord)中编写以下SQL并且没有运气。 SQL正在跟随这样的工作:

select main_section_id, district_id, sum(answer)
from section_inputs
where year = 2012
and main_section_id= 2 
group by main_section_id, district_id 
order by 3 desc
limit 5

我认为列名是描述性的,无论如何都遵循Rails约定。为了解决问题,我试图获得特定Districts的前5 MainSection答案列这里是整数,代表我的分数系统。

我知道问题有点过于具体(为我做的工作),但我真的在这里碰壁,如果要求解决方案太多,一些指导也会有很大的帮助。

由于

1 个答案:

答案 0 :(得分:1)

这应该有效

SectionInput.select([:main_section_id, :district_id, 'sum(answer) as  total']).where(:year=>2012).where(:main_section_id=>2).group(:main_section_id).group(:district_id).order('3 desc').limit(5)

否则,您可以直接包含要运行的SQL

SectionInput.find_all_by_sql('select main_section_id, district_id,
sum(answer) from section_inputs where year = 2012 and main_section_id=
2  group by main_section_id, district_id  order by 3 desc limit 5')

另外,请查看指南以查看所有Rails 3 querying basics