SQL: выборка разреженных данных (не больше раза в час)

Допустим, мы сохраняем данные в базу раз в 10 минут.
Нужно достать данные из базы, начинающиеся с определённого времени и не чаще одного раза за час.
В качестве базы используется sqlite3, но идея реализуется так же для других SQL.

Способ 1. Более простой.

Предполагаем, что сбор данных работает без сбоев, и каждые 10 минут данные сохраняются. Тогда достаточно достать только те данные, которые сохранялись в первые 10 минут часа.

Хорошо работает, если сбор данных не сбоит, или не было принято решение сделать сбор данных более редким. В этих случаях могут появляться пропуски в результатах, а если не повезёт, то результатов не будет совсем.

Способ 2. Чуть сложнее.

Для каждого часа выбираем запись с наименьшим временем.

Если не забывать про индекс по столбцу dt_request, план выполнения должен получиться вполне приличным.

В качестве дополнения — форматирование дат в sqlite3

LEAVE A COMMENT