Как запустить ROWS UNBOUNDED PRECEDING только для указанных c строк - PullRequest
0 голосов
/ 16 января 2020

У меня есть запрос SQL, который вычисляет промежуточный итог 2 столбцов. Каждую неделю появляются новые данные, которые будут добавляться к DUMMY_TABLE, и каждый раз, когда я запускаю running total для этой таблицы, он будет вычислять промежуточные суммы всех предыдущих строк, которые мне не нужны. Мне просто нужна промежуточная сумма для данных, которые были недавно вставлены. Это будет напрасной тратой ресурсов, если мне нужно будет выполнить суммирование всех предыдущих строк. Я хотел бы знать, есть ли какой-либо способ вернуть итоговую сумму только за вновь вставленную неделю.

Я пытался использовать where, но он фильтрует данные. Причина, по которой я ищу это, заключается в том, что если у меня появляются новые данные каждую неделю, а размер таблицы составляет 10 КБ, running total пересчитает все записи 10 КБ и новые данные, которые я вставил.

SELECT 
RID,
FYFW,
VOL,
FAILED_VOL,
SUM(VOL) OVER (PARTITION BY RID, SUBSTR(TRIM(FYFW), 1, 4)   ORDER BY RID,FYFW  ROWS UNBOUNDED PRECEDING) AS YTD_VOL,
SUM(FAILED_VOL) OVER (PARTITION BY RID, SUBSTR(TRIM(FYFW), 1, 4)   ORDER BY RID,FYFW  ROWS UNBOUNDED PRECEDING) AS YTD_FAILED_VOL,
FROM DUMMY_TABLE
GROUP BY 1,2,3,4
ORDER BY 1,2;

enter image description here

...