Как сгенерировать сгруппированные по минутам в данный день, max min и avg для временного диапазона в postgresql? - PullRequest
2 голосов
/ 17 апреля 2019

Здравствуйте. Я пытался сгенерировать отчет на основе некоторых данных в БД.Мне нужно рассчитать за ДЕНЬ (закончено), поэтому в этом случае предположим, что день для расчета будет: (2001-01-02), а в текущей дате мы находимся в 2001-01-03.Так что в основном за день до текущей даты.

  • Макс. Число для занятости locker_orders в тот день + время появления (пиковая максимальная загрузка запираемых шкафчиков на место)
  • Минимальное количество для заполнения locker_orders в тот день + время появления (пикминимальная загрузка шкафчиков на место)
  • Счет AVG для занятости locker_orders в тот день (средняя загрузка в этот день на основе минимального максимума и количества шкафчиков на место)
  • группа PER place_id
  • группа PER каждую минуту в текущем дне
  • КОЛИЧЕСТВО всех запирающихся шкафчиков в этот день (может меняться во времени)
  • При отсутствии даты вывоза шкафчик все еще занят -он может переместиться на другой интервал дней

Мне удалось выполнить простой запрос для группировки по месту, и в минуту был создан ордер на блокировку, но в настоящее время у меня возникают проблемы с размещением его в области текущего дня

вот представление временной шкалы (handmade;))

timeline

Приведена схема данных, содержащая

DB DATA

  • LOCKERS
------------------------------------
| id |        created_at           |
------------------------------------
|  1 | 2001-01-01 00:00 (DATETIME) |
------------------------------------
|  2 | 2001-01-01 00:00 (DATETIME) |
------------------------------------
|  3 | 2001-01-01 00:00 (DATETIME) |
------------------------------------
|  4 | 2001-01-01 00:00 (DATETIME) |
------------------------------------
|  5 | 2001-01-01 00:00 (DATETIME) |
------------------------------------
  • LOCKER_ORDERS
------------------------------------------------------------------------------------
| 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     |
-------------------------------------------------------------------------------------

OUTPUT DATA - желаемый выход

# | 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      |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...