Выборка и count из нескольких строк

Есть очень большая таблица со следующими полями:

  1. id
  2. price
  3. 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

Особо на эффективность не рассчитывайте - задача такая. Да и результат, без хотя бы общего числа найденных пар для сравнения - практически ниачём.

→ Ссылка