У меня есть таблица компаний на SQLite и сколько статей о каждой компании пишется каждый день в течение 10 лет (и около 3000 компаний).Я хочу сделать «скользящий» подсчет, при котором для каждой компании я подсчитываю общее количество новостных статей в трехдневном окне, при условии наличия положительного количества новостных статей.Например, начиная с 1-го дня, если количество статей равно 0, пропустите и перейдите ко 2-му дню и т. Д., Пока мы не достигнем дня (скажем, 4-го дня), где есть 1 статья, а затем подсчитаем общее количество статей впоследующие 3 дня (итак дни 4,5,6).После этого я перехожу к 7-му дню и продолжаю сканирование, пока не найду первый день, в котором есть новостная статья, и повторю эту трехдневную сумму, и продолжу сканирование после этого и т. Д. Я буду повторять это для каждой компании.
Я думал о скользящей сумме, используя оконные функции, но при 3000 компаниях, умножая 365 * 10 дней на скользящую сумму данных, в вычислительном отношении это может занять слишком много времени, и, кроме того, мне не нужно вычислять суммы в те дни, когда япропустить (то есть либо дни с 0, либо дни, которые не являются первыми днями в 3-дневном интервале).
Например, временной ряд для каждой компании может быть (День №: Количество статей)
Day 1:0
Day 2:0
Day 3:0
Day 4:1
Day 5:3
Day 6:2
Day 7:0
Day 8:0
Day 9:20
Day 10:2
Day 11:0
Тогда результат будет
Day 4:6 (1 from Day 4, 3 from Day 5, and 2 from Day 6)
Day 9:22 (20 from day 9, 2 from day 10, 0 from day 11).