在rails AR中有没有按周分组的方法?
answers = Answer.all
daily_answer_count = {}
answer.where("val = 5").group('date(created_at)').count.map{|k,v| daily_answer_count["#{k.strftime("%Y-%m-%d")}"] = v}
Output
{
"2016-03-05": 65
"2016-03-06": 57
"2016-03-07": 45
}所以问题是,我需要为每周偏差创建一个像上面这样的散列图,所以关键是一周的开始,值将是一周的总价值。
使用rails AR的任何直接方法
发布于 2016-03-12 23:13:34
如果您使用的是MySQL,您可以利用某些日期/时间函数进行分组,例如,返回以整数形式与周合并的年份的 function。
answer.where("val = 5").group('yearweek(created_at)').count
=> {
201601 => 34,
201602 => 35
}如果无论年份如何,都要按周分组,请使用 function
answer.where("val = 5").group('week(created_at)').count
=> {
01 => 23,
02 => 54
}看看 function docs,来确定你想要的一周的确切定义(例如,从周一开始的一周对周日的周等等)。
我相信在其他数据库中也有类似的功能。
发布于 2016-03-12 21:03:21
在应答模型中添加以下内容:
def week
self.created_at.strftime("%W")
end通过以下方式更新以下代码:
answer.where("val = 5").group_by(&:week).count.map{|k,v| daily_answer_count["#{k.strftime("%Y-%m-%d")}"] = v}发布于 2016-03-15 09:51:00
answers.where(:val => 5).group('week(created_at)').count
=> {
01 => 23,
02 => 54
}https://stackoverflow.com/questions/35963149
复制相似问题