Как описать такую логику в 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 на исходную таблицу, группировка
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Кенарий Санкт-Петербург
от 120 000 до 300 000 ₽
от 90 000 до 110 000 ₽
от 100 000 до 220 000 ₽
21 сент. 2020, в 13:08
5000 руб./за проект
21 сент. 2020, в 13:04
25000 руб./за проект
21 сент. 2020, в 12:51
3000 руб./за проект