【发布时间】:2018-07-13 22:04:50
【问题描述】:
我需要进行计算,例如按时间范围集合分组的所选数据的平均值。
示例: 存储数据的表有几个主要列,它们是: |时间戳 |外部标识 |价值 |
现在我想计算 20 组(或更多)日期范围的平均值: 1) 2000-01-01 00-00-00 -> 2000-01-04 00-00-00 2) 2000-01-04 00-00-00 -> 2000-01-15 00-00-00 ...
重要的是组之间没有间隙和交叉点,因此这意味着第一个日期和最后一个日期涵盖了整个时间范围。
另一个重要的事情是,在“date_from”到“date_to”的集合中,可以有集合之外的行(不需要的 external_id)。
我尝试了两种方法: 1) 使用 SQL 查询中的平均函数对每个“时间范围”步骤执行查询(但我不喜欢这样 - 所有查询都消耗太多时间,而且执行多个查询听起来不是好方法)
2) 我已经选择了所有需要的行(在一个 SQL 请求中),然后我对结果进行了循环。问题是我必须检查“数据组”当前日期时间所属的每个步骤。这看起来像是一种更好的方法(从 SQL 的角度来看),但现在由于循环中的循环,我的性能不太好。我需要弄清楚如何避免在主循环中执行循环(检查当前时间戳属于哪个组)。
任何建议都会很有帮助。
【问题讨论】:
标签: python postgresql