RoR Active Record中的复杂查询,包括WHERE IN和AVG()

时间:2013-03-13 16:10:08

标签: sql ruby-on-rails activerecord

我在RoR中很新,并且在编写我的SQL查询时遇到很多问题。我尝试在没有(或只有几个)sql的情况下完成它们。

这是我想写的查询。

select AVG(results.value)as 'avg', form_rows.id, form_rows.domtype 
from form_rows
join results on results.form_row_id = form_rows.id 
where form_rows.form_id = '9' and form_rows.domtype IN ('numfield', 'percentagefield')
group by results.form_row_id

注意,在第一个where条件(form_rows.form_id ='9')中,该值作为参数发送。

如果有人可以帮助我:)

1 个答案:

答案 0 :(得分:1)

我假设你有一个FormRow和结果模型

FormRow.joins(:results).where(:form_id => params[:form_id])
.where("form_rows.domtype IN(?)", ['numfield', 'percentagefield'])
.group("results.form_row_id")
.select("AVG(results.value) as 'avg', form_rows.id, form_rows.domtype")

我没有测试它,但应该是它

顺便说一下:如果你在select中使用它,你应该按照form_rows.domtype进行分组。