У меня есть таблица x с 53 столбцами и примерно 1 миллионом строк. Первый столбец — это идентификатор, а следующие 52 столбца — это денежные операции, которые происходят каждую неделю с определенной даты.
eg.
id,w1,w2,w3,w4,w5..w52
a1,0,5,1,4,0..43
a2,7,0,6,9,4..27
Мне нужна совокупная сумма транзакций за все эти недели на идентификатор. Одно из решений, которое я нашел, заключалось в том, чтобы использовать unpivot для получения 52 строк на идентификатор, а затем применять совокупную сумму.
sum(transaction) over (partition by id order by week asc)
Моя проблема здесь в том, что теперь у меня есть таблица с 60 миллионами строк, и Oracle работает очень медленно (запредельно так), сортируя получение суммы.
Другой вариант заключается в том, что я взял каждый столбец и вручную сложил их вместе следующим образом.
select
id,
w1,
w1+w2,
w1+w2+w3,
w1+w2+w3+w4,
w1+w2+w3+w4+w5,
..
w1+w2+w3+w4+w5..w49+w50+w51+w52
from x
Проблема здесь в том, что для получения простой формулы требуется много кода (написание его было мучением!).
Могу ли я в любом случае настроить свою таблицу (индекс/раздел), чтобы ускорить совокупную сумму по такому количеству строк, или любой код, который я могу использовать с моей исходной таблицей для достижения этих результатов с наименьшими усилиями?!