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)

次の表を表示することが期待されています (date, sum(val1), avg(val2))

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

上記は、日付全体の合計(val1)、平均(val2)です

ビューで AR クエリを使用してこれを実現する最も簡単な方法は何でしょうか。ビューのコードはどのように見えるべきか、どのクエリを使用すべきか。

4

2 に答える 2

2

使用する

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

合計のみの配列を取得します。必要に応じてフィールドを追加できます。他の人が言及した解決策は、SQL ではなく Ruby で合計を行うため、あまり良くありません。表示するのは本当に簡単です。ただの配列です。<%= 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 に答える