Рассмотрим набор данных с данными за 6 месяцев следующим образом:
// Month-01 = 1
// Month-02 = 5
// Month-03 = 3
// Month-04 = 2
// Month-05 = 7
// Month-06 = 8
Тогда скользящий квартал (сумма последних 3 месяцев) будет выглядеть следующим образом:
// QTR-01 = N/A
// QTR-02 = N/A
// QTR-03 = 9
// QTR-04 = 10
// QTR-05 = 12
// QTR-06 = 17
Теперь неэффективный алгоритм для этого вычисления в SQL выглядит следующим образом (не идеальный алгоритм, просто рассмотрите тему алгоритма, пожалуйста):
foreach row { id,month,qtr,... } in database.table
{
qtrValue = select sum( top 3 month) from database.table where table.id = row.id;
update row.qtr set row.qtr= qtrValue;
}
Можете ли вы предложить эффективный алгоритм и / или проект хранилища данных для этой проблемы? Неважно, включает ли это реляционную базу данных или нет.