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

ruby-on-rails – 平均每小时inverval – Rails

发布时间:2020-12-17 02:08:02 所属栏目:百科 来源:网络整理
导读:[信息:Ubuntu 14.02,ruby 2.2.3p110,Rails 4.2.1] 我需要一个rake任务来从DB(SQLite)获取每小时范围的平均插入[如00:00到00:59]. 我试图做一些像: namespace :db do task results: :environment do tweet = Tweet.group('date(created_at)').group('hour(c
[信息:Ubuntu 14.02,ruby 2.2.3p110,Rails 4.2.1]
我需要一个rake任务来从DB(SQLite)获取每小时范围的平均插入[如00:00到00:59].
我试图做一些像:

namespace :db do
        task results: :environment do
            tweet = Tweet.group('date(created_at)').group('hour(created_at)').average()
            puts "#{tweet}"
        end

    end

但这让我这个例外

ActiveRecord::StatementInvalid: SQLite3::SQLException: misuse of aggregate function count(): SELECT AVG(count(*)) AS average_count_all,date(created_at) AS date_created_at,hour(created_at) AS hour_created_at FROM "tweet" GROUP BY date(created_at),hour(created_at)

有没有办法使用ActiveRecord获得每小时的平均值?

解决方法

您可以使用嵌套的原始SQL查询:

SELECT
  AVG(hourly_count) as average_count_all
FROM
  (
    SELECT
      count(*) as hourly_count,date_created_at,hour_created_at
    FROM
      (
        SELECT
          date(created_at) as date_created_at,hour(created_at) as hour_created_at
        FROM
          tweet
      ) as hours
    GROUP BY
      date_created_at,hour_created_at
  ) as hourly_counts

这是未经测试的,但这个想法是这样的:

>解析日期和小时(小时子查询)>获取每小时总计数(以hourly_counts子查询为单位)>平均每小时计数(在外部查询中)

(编辑:李大同)

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

    推荐文章
      热点阅读