高级查询日期分组困境

时间:2013-01-04 05:28:20

标签: sql ruby-on-rails ruby postgresql activerecord

在我的Rails应用程序中,PostgreSQL数据库是包含过去10年每小时价格的记录:

10(24 x 365)其中:“12/31/2012 01:00:00”,“11.99”

以下查询,按天分组价格,平均每日分组中的价格以创建每日平均价格,并返回每天的“日”,“每日平均”对:

   HourlyPrice.average(:price, :group => "DATE_TRUNC('day', date)")

问题是,我的源数据中的每小时价格实际上反映了前一个小时的价格。因此,在我的数据源.CSV中,日期从01:00:00开始,到24:00:00结束。

这与PostgreSQL如何在其DateTime列中保存记录相冲突。导入CSV数据后,PostgreSQL会转换包含第二天24:00:00到00:00:00的记录。

这会抛弃上面我的平均查询的准确性。要修复查询,我仍然希望按天分组,但偏移1小时。因此,平均范围从01:00:00开始,到第二天的00:00:00结束。

是否可以调整上述查询以反映这一点?

1 个答案:

答案 0 :(得分:1)

在将date函数应用到DATE_TRUNC之前,您可以从HourlyPrice.average(:price, :group => "DATE_TRUNC('day', date - INTERVAL '1 hour')") 减去一小时,如下所示:

{{1}}