Ruby on rails 平均每个字段日期的所有值
我正在尝试构建一个web应用程序,用于分析有关电影的调查结果,这些结果由管理员手动上传到系统中。结果是根据调查的现场日期上传的。调查了许多不同的类别,每个受访者为每部电影的每个类别输入一个数字(1-7)。我已经设置了这个系统,这样在电影索引页面上,你可以选择一部电影,它会把你带到网站上特定电影的放映页面。我想做的是让系统在表格中仅显示基于每个字段日期的调查结果(按类别)的平均值 管理员输入的原始结果示例:Ruby on rails 平均每个字段日期的所有值,ruby-on-rails,date,average,Ruby On Rails,Date,Average,我正在尝试构建一个web应用程序,用于分析有关电影的调查结果,这些结果由管理员手动上传到系统中。结果是根据调查的现场日期上传的。调查了许多不同的类别,每个受访者为每部电影的每个类别输入一个数字(1-7)。我已经设置了这个系统,这样在电影索引页面上,你可以选择一部电影,它会把你带到网站上特定电影的放映页面。我想做的是让系统在表格中仅显示基于每个字段日期的调查结果(按类别)的平均值 管理员输入的原始结果示例: Field Date: 03/23/2013, Interesting:5, Trendy
Field Date: 03/23/2013, Interesting:5, Trendy: 6, Funny: 3
Field Date: 03/23/2013, Interesting:6, Trendy: 6, Funny: 7
Field Date: 03/29/2013, Interesting:2, Trendy: 4, Funny: 3
我希望在表中输出的内容示例:
Field Date: 03/23/2013, Interesting:5.5, Trendy: 6, Funny: 5
Field Date: 03/29/2013, Interesting:2, Trendy: 4, Funny: 3
这是我的模式:
create_table "movies", :force => true do |t|
t.string "name"
t.string "category"
t.date "field"
end
create_table "results", :force => true do |t|
t.string "name"
t.date "field"
t.integer "movie_id"
t.integer "interesting"
t.integer "trendy"
t.integer "funny"
end
以下是“我的电影放映”页面中的表格:
<% @results.order('field DESC').each do |resultz| %>
<tr class="tableline" >
<td class="tableline"><%= resultz.field %></td>
<td class="tableline"><%= resultz.interesting %></td>
<td class="tableline"><%= resultz.trendy %></td>
<td class="tableline"><%= resultz.funny %></td>
</tr>
当前显示管理员上传的所有原始值。我想我需要在使用:group选项的同时使用average方法,但由于某种原因,当我尝试时,它总是给我错误。我认为DATE_TRUNC不起作用,因为我使用的是sqlite3,尽管我不确定这是不是正确的推理
任何帮助都将不胜感激(甚至链接到适当的文档)!谢谢 ActiveRecord确实具有用于查找列平均值的
average
,并允许诸如:group
之类的选项。但是,它一次只适用于一列。对于这种情况,通常建议您自己进行sql查询,或使用如下可链接的内容:
@fields = Field.group('DATE(field_date)').
select('avg(interesting) as interesting,
avg(funny) as funny,
avg(trendy) as trendy')
希望能有帮助。我很想看到一些好的解决方案,如果有的话 我认为您需要在控制器中执行的SQL查询如下:
SELECT field, AVG(interesting), AVG(trendy), AVG(funny) FROM results WHERE movie_id =
<movie_im_at_show_page_for> GROUP BY field
从电影id所在的结果中选择字段、平均值(有趣)、平均值(时尚)、平均值(有趣)=
按字段分组
在Rails中,看起来像这样:
@results = Results.find(select: "field, AVG(interesting), AVG(trendy), AVG(funny)",
conditions: ["movie_id = ?", <movie_im_at_show_page_for>], group: "field")
@results=results.find(选择:“字段、平均值(有趣)、平均值(流行)、平均值(有趣)”,
条件:[“电影id=?”,],组:“字段”)
您必须用实际ID替换
。我认为在您的控制器中类似于@movie.ID
。您的有趣的
,有趣的
属性等的数据类型是什么?在activerecord查询之后,如果我们将它们类型转换回那些类型,它将保留相同的类型。这三个属性应该是整数。我的意思是,平均后应该是什么?根据您上面的示例案例:字段日期:2013年3月23日,有趣的:5.5,流行的:6,有趣的:5
,有趣的值为5.5,但我猜,它是为整数类型制作的。哦,很抱歉,我认为浮动是合适的。Hm。要返回那些整数容器中的浮点结果,有趣的
,有趣的
等是不可能的。