Я использовал MYSQL для хранения сигналов, которые выбираются за определенный период. Моя задача заключается в определении неисправного сигнала на основе ширины фильтра. Таблица сигналов состоит из индекса сигнала и его значения. Во время первичной фильтрации я смог получить индекс последовательности, где есть несоответствие. Отфильтрованная таблица теперь состоит из индексов сигнала, где есть несоответствие. Теперь я хочу подсчитать количество случаев, когда сигнал неисправен.
Например, отфильтрованная таблица состоит из таких индексов, как 3,4,5,6,9,10,13,16
, если я применяю фильтр ширины 3, то есть два экземпляра, где сигнал неисправен, как указано последовательностью индексов 3,4,5
и 4,5,6
. Если я применяю фильтр ширины 2, то аналогично получается 4 экземпляра.
Я хочу подсчитать это, используя sql запросов к таблице, которая состоит из этих индексов. На данный момент это то, что я делаю для ширины фильтра 2.
SELECT COUNT(*) FROM table_index AS t1 INNER JOIN table_index AS t2 WHERE t1.id+1=t2.id;
Но этот подход довольно дорогостоящий, когда применяется фильтр шириной 3 и более, так как нужно использовать внутреннее соединение для этих много столов. Есть ли эффективный способ сделать это, используя только SQL запросов? Или мне нужно сделать этот анализ, читая эти индексы по-другому? (Пример: использование python)
Спасибо.