Я успешно использую функцию PostgreSQL width_bucket(val, min, max, buckets)
, чтобы разделить мой набор данных на блоки одинакового размера. Но мои данные содержат временные диапазоны в миллисекундах (start_time
и end_time
). Я ищу способ включить строку в несколько сегментов на основе временного интервала.
Это пример того, где я сейчас нахожусь. У меня есть начальные и конечные сегменты для каждой строки:
start_time | end_time | start_bucket | end_bucket
------------+----------------+--------------+------------
0 | 492 | 1 | 1
404 | 580 | 1 | 1
0 | 628 | 1 | 1
560 | 740 | 1 | 2
644 | 720 | 1 | 2
24 | 160 | 1 | 1
0 | 88 | 1 | 1
640 | 1268 | 1 | 2
556 | 716 | 1 | 1
0 | 2086 | 1 | 3
Я ищу агрегированный результат:
bucket | count
------------+---------------
1 | 10
2 | 4
3 | 1
Я знаю, как достичь результата, если учту только start_time
или end_time
. Есть ли способ объединить то, что я имею сейчас, в желаемый результат?