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