Выборка и count из нескольких строк
Есть очень большая таблица со следующими полями:
- id
- price
- timestamp
Есть определенный интервал, допустим, 15 минут, нужно обойти всю таблицу, найти все пары значений, между которыми временной интервал составляет 15 минут, для всех этих пар найти разницу price в процентах, а затем выполнить сравнение с заранее известым числом и вывести count всех значений, которые больше этого заранее известного числа.
Как это можно эффективно реализовать в MySQL?
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
SELECT COUNT(*)
FROM table t1
JOIN table t2
ON t1.`timestamp` BETWEEN t2.`timestamp` + INTERVAL 15 * 60 - 5 SECOND
AND t2.`timestamp` + INTERVAL 15 * 60 + 5 SECOND
WHERE (1 - t1.price / t2.price) > @difference_limit
Особо на эффективность не рассчитывайте - задача такая. Да и результат, без хотя бы общего числа найденных пар для сравнения - практически ниачём.