Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 平均每个字段日期的所有值_Ruby On Rails_Date_Average - Fatal编程技术网

Ruby on rails 平均每个字段日期的所有值

Ruby on rails 平均每个字段日期的所有值,ruby-on-rails,date,average,Ruby On Rails,Date,Average,我正在尝试构建一个web应用程序,用于分析有关电影的调查结果,这些结果由管理员手动上传到系统中。结果是根据调查的现场日期上传的。调查了许多不同的类别,每个受访者为每部电影的每个类别输入一个数字(1-7)。我已经设置了这个系统,这样在电影索引页面上,你可以选择一部电影,它会把你带到网站上特定电影的放映页面。我想做的是让系统在表格中仅显示基于每个字段日期的调查结果(按类别)的平均值 管理员输入的原始结果示例: Field Date: 03/23/2013, Interesting:5, Trendy

我正在尝试构建一个web应用程序,用于分析有关电影的调查结果,这些结果由管理员手动上传到系统中。结果是根据调查的现场日期上传的。调查了许多不同的类别,每个受访者为每部电影的每个类别输入一个数字(1-7)。我已经设置了这个系统,这样在电影索引页面上,你可以选择一部电影,它会把你带到网站上特定电影的放映页面。我想做的是让系统在表格中仅显示基于每个字段日期的调查结果(按类别)的平均值

管理员输入的原始结果示例:

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。要返回那些整数容器中的浮点结果,
有趣的
有趣的
等是不可能的。