我正在尝试在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
,答案列这里是整数,代表我的分数系统。
我知道问题有点过于具体(为我做的工作),但我真的在这里碰壁,如果要求解决方案太多,一些指导也会有很大的帮助。
由于
答案 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