Как описать такую логику в Mysql запросом?

Добрый вечер. Подскажите, пожалуйста, как можно составить запрос максимально корректно.
Имеется таблица 20 млн строк, decimal(10, 5) и timestamp с миллисекундами.
Задача такова: необходимо выдать 2000 сгруппированных строк до определенного времени.
В одной секунде находится N число данных, например 5 значений. И надо сначала сгруппировать данные посекундно, и вывести 2000 секунд.
Как предварительно я составил запрос:
SELECT AVG(`price`) FROM `eur_usds` WHERE `created_at` BETWEEN '2020-08-30 00:00:00' AND '2020-08-30 00:32:00' GROUP BY DATE_FORMAT(`created_at`, '%Y-%m-%d %H:%i:%s')

Это отрабатывает моментально, учитывая 20 млн строк. Но данный запрос недоработан, т.к. я группирую данные между определенными датами '2020-08-30 00:00:00' и'2020-08-30 00:32:00'.
В идеале хотелось бы составить запрос таким образом берем дату до которой необходимо брать данные, потом необходимо посчитать с какой даты начинать отсчет то есть до того времени пока мы не наберем 2000 групп.
Почему нельзя сделать как сейчас? Потому что в выходной данные не идут, а соотвественно вручную нельзя задать интервал времени.

То есть в целом надо остановить GROUP BY когда будет набрано 2000 групп.
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
BojackHorseman
@BojackHorseman Куратор тега MySQL
...в творческом отпуске...
сгенерить тайм серию, left join на исходную таблицу, группировка
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы