У меня есть необходимость возвращать определенное количество строк из запроса в течение заданного времени начала и окончания с динамически вычисляемым интервалом шага.
Здесь я упростил задачу с таблицей, состоящей изметка времени unix и соответствующее целочисленное значение.
В моем примере мне нужно иметь 200 строк, возвращаемых с ИНКЛЮЗИВНЫМ временем начала 1307455099 и и ИНКЛЮЗИВНЫМ временем окончанияиз 1307462455 .
Вот текущий запрос, который я разработал до сих пор.Он использует модуль общего количества строк для вычисления шага шага:
SELECT timestamp, value FROM soh_data
WHERE timestamp % (CAST((1307462455 - 1307455099)/200 AS SIGNED INTEGER)) = 0
AND timestamp BETWEEN 1307455099 AND 1307462455
ORDER BY timestamp;
Первая проблема заключается в том, что, поскольку я использую модуль, время начала и окончания не всегда включено (это можно решить с помощьюдополнительный запрос ... я в порядке).
Второй, более трудный вопрос, который нужно решить, это то, что общее количество строк, возвращаемых в этом случае, составляет только 196. В большинстве запросов это n-1.
К вашему сведению, это база данных MySQL с миллионами строк данных.
Есть идеи?