我有这个Event模型
class Event < ActiveRecord::Base
attr_accessible :starts_at, :ends_at, :price
end
Run Code Online (Sandbox Code Playgroud)
一个Event可以是单一的即时事件:
Event.create(:starts_at => Date.today, :ends_at=>nil, :price => 10.0)
Run Code Online (Sandbox Code Playgroud)
它也可以跨越多天或几个月:
Event.create(:starts_at => Date.today, :ends_at => (Date.today + 2.months), :price => 20.0)
Run Code Online (Sandbox Code Playgroud)
我希望将事件的成本按月分解,以便即时事件的成本自然地落入其所属的月份,并且跨越多个月的事件的成本应该在这些月份之间按比例分配.
显然使用SQL会很难处理,但也许有人对此有一些建议?
计算此聚合的最有效方法是什么?
更新:
这是一个明确定义的sqlfiddle数据结构:http://sqlfiddle.com/#!12/a532e/6
我想从这个数据集中得到的是:
( (Date('2013-01-01'), 31.6), (Date('2013-02-01'), 8.4) )
Run Code Online (Sandbox Code Playgroud)