Агрегатная функция за заданный интервал времени

Мой SQL немного заржавел, и у меня довольно много трудностей с этой проблемой. Предположим, у меня есть таблица со столбцом Timestamp и столбцом Number. Цель состоит в том, чтобы вернуть набор результатов, содержащий среднее значение для некоторого произвольно выбранного регулярного интервала.

Так, например, если бы у меня были следующие исходные данные, результирующий вывод с 5-минутным интервалом был бы следующим:

time                               value
-------------------------------    -----
06-JUN-12 12.40.00.000000000 PM      2
06-JUN-12 12.41.35.000000000 PM      3
06-JUN-12 12.43.22.000000000 PM      4
06-JUN-12 12.47.55.000000000 PM      5
06-JUN-12 12.52.00.000000000 PM      2
06-JUN-12 12.54.59.000000000 PM      3
06-JUN-12 12.56.01.000000000 PM      4

OUTPUT:

start_time                         avg_value
-------------------------------    ---------
06-JUN-12 12.40.00.000000000 PM      3
06-JUN-12 12.45.00.000000000 PM      5
06-JUN-12 12.50.00.000000000 PM      2.5
06-JUN-12 12.55.00.000000000 PM      4

Обратите внимание, что это база данных Oracle, поэтому решения, специфичные для Oracle, будут работать нормально. Конечно, это можно было бы сделать с помощью хранимой процедуры, но я надеялся выполнить задачу в одном запросе.

8
задан a_horse_with_no_name 17 December 2018 в 13:46
поделиться