Возвращение массива значений из отметок времени между временем начала и окончания - PullRequest
0 голосов
/ 29 мая 2019

У меня есть запрос, который производит отметку времени и значение в этой отметке времени.

select timestamp, value
from table1;

Итак, выборка из данных будет выглядеть так:

      timestamp      |     value      |
---------------------------------------
 2019-02-28 01:00:00 | 1              |
 2019-02-28 01:10:00 | 1              |
 2019-02-28 01:20:00 | 6              |
 2019-02-28 01:30:00 | 17             |
 2019-02-28 01:40:00 | 4              |
 2019-02-28 01:50:00 | 4              |

У меня естьвторой запрос, который производит отметку времени начала и окончания.

select start, end
from table2;

Пример из этого будет выглядеть следующим образом:

       start        |         end         |
-------------------------------------------
2019-02-28 01:00:00 | 2019-02-28 01:30:00 |
2019-02-28 01:40:00 | 2019-02-28 01:50:00 |

Как бы я мог объединить два запроса, чтобы получить такой вывод?

       start        |         end         |      values     |
-------------------------------------------------------------
2019-02-28 01:00:00 | 2019-02-28 01:30:00 | {1,1,6}         |
2019-02-28 01:40:00 | 2019-02-28 01:50:00 | {4}             |

1 Ответ

1 голос
/ 29 мая 2019

Агрегация и join:

select t2.start, t2.end, array_agg(t1.value)
from table2 t2 left join
     table1 t1
     on t1.timestamp >= t2.start and t1.timestamp < t2.end
group by t2.start, t2.end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...