0

我正在尝试在 Rails 中编写以下 SQL(通过 ActiveRecord)并且没有运气。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,这里的答案列是代表我的分数系统的整数。

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

谢谢

4

1 回答 1

2

这应该工作

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 查询基础知识

于 2013-01-05T14:02:35.077 回答