加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何计算日期范围内每天的记录

发布时间:2020-12-17 04:01:36 所属栏目:百科 来源:网络整理
导读:我有一个投票系统.每次投票都有一个分数. 我希望能算出每天有多少票? 下面的代码会为每天添加每个投票的分数,并返回一个以总数和日期为关键字的哈希值: ratings = where(created_at: start.beginning_of_day..Time.zone.now).group("created_at").select("
我有一个投票系统.每次投票都有一个分数.

我希望能算出每天有多少票?

下面的代码会为每天添加每个投票的分数,并返回一个以总数和日期为关键字的哈希值:

ratings = where(created_at: start.beginning_of_day..Time.zone.now).group("created_at").select("created_at,sum(score) as total_score")
ratings.each_with_object({}) do |rating,scores|
 scores[rating.created_at.to_date] = rating.total_score
end

我希望能算出每天投了多少票.有任何想法吗?

解决方法

您可以使用更好的语法来执行您想要的操作:

from = start.beginning_of_day
to   = Time.zone.now
Rating.group('date(created_at)').where(created_at: from .. to).count(:score)

这将返回一个哈希,其日期(created_at)为关键字,并且每天计数(:得分)为值.

例:
????{“2014-01-21”=> 100,“2014-01-22”=> 1213}

相应的SQL是:

SELECT COUNT("ratings"."score") AS count_score,date(created_at) AS date_created_at FROM "ratings" WHERE ("ratings"."created_at" BETWEEN '2014-01-21' AND '2014-01-24') GROUP BY date(created_at)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读