1

我有点迷失了这个。我可以建立一堆计数查询来查找在给定时间段内具有最后登录日期的所有记录,例如计算过去一周每天有多少条记录(7 个计数查询,每天一个),但我有兴趣知道是否有一种漂亮、更高效的 Ruby/Rails 方法来做到这一点。

我真的没有任何示例代码要发布。也许这样的事情会有所帮助:

hour_range = 7 * 24 # 7 days worth of hours
start_date = Time.now.to_time - day_range
end_range = Time.now
start_date.to_date.upto(end_range.to_date) do |day|
    # Series of count queries which populate an array of counts for each day...
end

我正在使用 Highcharts(或尝试一下)在客户端绘制图表。

谢谢。

4

1 回答 1

2

如果您提前计划,您可以在表中创建可索引的衍生列。这使得将结果组合在一起非常简单。

例如,如果您想按天分组,请创建一个日期列。如果您想按周分组,您可以使用一些可用的日期函数来执行此操作,生成类似于2012042012 年第 4 周的值。月份更容易,因为它只是%Y%M格式化的日期。

其中大部分可以作为使用本机 SQL 日期格式化函数的现有数据的单独迁移或作为一系列before_save挂钩来填充。

使报告高效且响应迅速的方法是执行尽可能少的查询,并使这些查询尽可能易于数据库计算。加载数百条记录或进行数十次查询不会扩展。

于 2012-04-12T15:03:44.277 回答