Добрый вечер. Подскажите, пожалуйста, как можно составить запрос максимально корректно.
Имеется таблица 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 групп.