sql - 高级查询日期分组困境

标签 sql ruby-on-rails ruby postgresql activerecord

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

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

以下查询按天对价格进行分组,对这些每日分组中的价格进行平均以创建每日平均价格,并返回每一天的“day”、“daily average”对:

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

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

这与 PostgreSQL 喜欢在其 DateTime 列中保存记录的方式相冲突。导入 CSV 数据后,PostgreSQL 将我包含时间 24:00:00 的记录转换为第二天的 00:00:00。

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

是否可以调整上述查询以反射(reflect)这一点?

最佳答案

在对其应用 DATE_TRUNC 函数之前,您可以从 date 中减去一小时,如下所示:

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

关于sql - 高级查询日期分组困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14151561/

相关文章:

来自子查询的mysql多个字段

mysql - 连接四个表并连接一个表的结果 - MySQL

java - setAutoCommit(true) 是否提交过去的执行?

ruby-on-rails - 如何(通过关系表)加入针对自身的表?

ruby-on-rails - 在 Ubuntu 9.1 Rails 开发箱中配置 Postgres 以进行 Cucumber 测试

sql - PostgreSQL:查看当前事务是否创建了一行

ruby-on-rails - 如何将 iframe 添加到 ruby​​ on rails 4.2.6 中的清理标签?

ruby-on-rails - 为什么即使条件为真,拒绝也不能处理我的哈希?

ruby-on-rails - 复合模型名称问题

ruby - 将 `limit` `offset`选项传递给searchkick高级搜索主体对象