[region].artifacts.[PROJECT-ID].appspot.com
id | time | price
1 | 1-02-17 | 15.99
1 | 1-03-17 | 15.99
1 | 1-04-17 | 15.99
1 | 1-05-17 | 20.99
1 | 1-06-17 | 20.99
1 | 1-07-17 | 15.99
1 | 1-08-17 | 15.99
基本上我想在按日期排序之后对价格进行分组。
这可以用rails完成吗?
答案 0 :(得分:0)
如果价格点数不高,您可以从db获取记录并执行此操作:
price_ranges, prev_price = {}, nil
ProductHistory.where(product_id: 1).order(:date).find_each do |history|
price_ranges[history.date] = history.price if history.price != prev_price
prev_price = history.price
end
在这个循环结束时,你会得到:
{ "1-02-17": 15.99, "1-05-17": 20.99, "1-07-17": 15.99 }
注意:如果Date
中的db列,则键将是datetime
对象而不是字符串。
如果记录数量很高,我建议你在你的数据库中这样做。这个问题看起来与你的用例非常相似,如果你有mysql,那么你可以自己使用它 How to eliminate only continuous duplicates but not all duplicates in a select query (MySQL)?