1

foo, foo_bar 表示为 ActiveModel 类

create table foo (id, captured_date)
create table foo_bars (id, foo_id, val1, val2)

insert into foo (1, '2012-11-01')
insert into foo (2, '2012-11-02')

insert into foo_bars (1, 1, 1, 1)
insert into foo_bars (1, 1, 2, 2)
insert into foo_bars (1, 2, 3, 3)
insert into foo_bars (1, 2, 4, 4)

我应该在表格中显示以下内容(日期、总和(val1)、平均(val2))

2012-11-01 3 1.5
2012-11-02 7 3.5
_________________
           10 2.5
_________________

以上是跨日期的 sum(val1), avg(val2)

在您的视图中使用 AR 查询来实现这一目标的最简单方法是什么。我的视图代码应该是什么样子以及我应该使用什么查询。

4

2 回答 2

2

利用

select("date, SUM(val1) as sum_val1").group("date").pluck(:date, :sum_val1)

您将仅获得总和数组。您可以根据需要添加字段。另一个人提到的解决方案不是那么好,因为它在 Ruby 中而不是在 SQL 中求和。要显示它真的很简单,它只是一个数组!显示 <%= result.inspect %> 并从那里开始。

于 2012-11-09T13:36:52.550 回答
0

尝试这个

总和

FooBar.sum(:val1)

或者如果你想通过条件

FooBar.where("foo_id = ? ", foo_id).sum(:val1)

或者如果你有一个对象,view那么你可以做

例如

@foobars.sum(:val1)

平均而言

FooBar.average(:val1)
于 2012-11-08T08:05:17.857 回答