如何在postgresql中为时间范围生成按分钟分组的、最大最小值和平均值?

如何在postgresql中为时间范围生成按分钟分组的、最大最小值和平均值?,postgresql,time,database-performance,postgres-9.6,Postgresql,Time,Database Performance,Postgres 9.6,您好,我一直在尝试根据一些数据库数据生成报告。 我需要每天计算(完成),所以在这种情况下,让我们假设计算的日期是:(2001-01-02),在当前日期中,我们是在2001-01-03。 所以基本上是在当前日期的前一天 当日储物柜订单占用的最大数量+发生时间(每个地方储物柜的最大峰值负载) 当日储物柜订单占用的最小计数+发生时间 (每个位置储物柜的最大最小负载) 当日储物柜订单占用率的平均计数(基于最小最大值和每个位置的储物柜数量的当日平均负载) 按地点分组\u id 当日每分钟分组 当天店内所

您好,我一直在尝试根据一些数据库数据生成报告。 我需要每天计算(完成),所以在这种情况下,让我们假设计算的日期是:(2001-01-02),在当前日期中,我们是在2001-01-03。 所以基本上是在当前日期的前一天

  • 当日储物柜订单占用的最大数量+发生时间(每个地方储物柜的最大峰值负载)
  • 当日储物柜订单占用的最小计数+发生时间 (每个位置储物柜的最大最小负载)
  • 当日储物柜订单占用率的平均计数(基于最小最大值和每个位置的储物柜数量的当日平均负载)
  • 按地点分组\u id
  • 当日每分钟分组
  • 当天店内所有储物柜的数量(可能会随时间变化)
  • 如果没有取货日期,储物柜仍然有人-它可能会移动到另一天
我能够执行一个简单的查询,按地点分组,每分钟创建一次储物柜订单,但目前我在将其放入当前范围时遇到问题

这是时间线的表示(手工制作;)

给定一个包含

数据库数据

  • 储物柜
  • 储物柜订单
输出数据-所需的输出

# | Date (day) | place_id | min | max | avg | NO of all lockers in that day in given place |
---------------------------------------------------------------------------------------------
# | 2001-01-02 |   1      |  0  |  4  |  2  |      8      |

时间创建的
开始的一天是24小时还是特定于某个日期?关于你的问题,
locker\u订单
有多个日期,我有点困惑。你能为我澄清一下已经结束/过去的一天吗?此外,其中一个项目符号表示“每分钟分组”,但所需的输出没有时间。最小和最大列是每分钟计算的原因?所以你可以说,在任何给定的一分钟,这是最小/最大值?是的,这正是分钟的原因:)而且任何储物柜订单都可能在储物柜中,从前一天到第二天,甚至更远。因此,我不确定在时间上下文中是否创建了at列。这几乎就像给定的一天不在列中,而是作为一个独立的实体存在于计算的时间范围之外。为此,您需要一个具有某种边界(开始时间、结束时间)的函数。我一直在思考这个问题。这不是一个容易解决的问题,但我会想办法的。
------------------------------------------------------------------------------------
| id |          created_at         |        pickup_date     | place_id |  locker_id |
------------------------------------------------------------------------------------
|  1 | 2001-01-02 10:00 (DATETIME) |  2001-01-02 13:25 (DATETIME) |  1  |     2     |
------------------------------------------------------------------------------------
|  2 | 2001-01-02 07:45 (DATETIME) |  2001-01-02 11:50 (DATETIME) |  1  |     1     |
------------------------------------------------------------------------------------
|  3 | 2001-01-02 19:30 (DATETIME) |            NULL              |  1  |     4     |
------------------------------------------------------------------------------------
|  4 | 2001-01-01 14:40 (DATETIME) |  2001-01-01 21:15 (DATETIME) |  1  |     5     |
-------------------------------------------------------------------------------------
|  5 | 2001-01-02 12:25 (DATETIME) |            NULL              |  1  |     3     |
-------------------------------------------------------------------------------------
|  6 | 2001-01-02 13:30 (DATETIME) |  2001-01-02 18:40 (DATETIME) |  1  |     2     |
-------------------------------------------------------------------------------------
|  7 | 2001-01-02 12:45 (DATETIME) |  2001-01-02 20:50 (DATETIME) |  1  |     1     |
-------------------------------------------------------------------------------------
|  8 | 2001-01-02 07:40 (DATETIME) |  2001-01-02 18:15 (DATETIME) |  1  |     5     |
-------------------------------------------------------------------------------------
# | Date (day) | place_id | min | max | avg | NO of all lockers in that day in given place |
---------------------------------------------------------------------------------------------
# | 2001-01-02 |   1      |  0  |  4  |  2  |      8      |