У меня есть таблица S с данными временных рядов, например:
key day delta
Для данного ключа возможно, но маловероятно, что будут отсутствовать дни.
Я бы хотелпостроить накопительный столбец из значений дельты (положительные значения INT), чтобы вставить эти накопительные данные в другую таблицу.Это то, что я получил до сих пор:
SELECT key, day,
SUM(delta) OVER (PARTITION BY key ORDER BY day asc RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
delta
FROM S
В моем варианте SQL предложение по умолчанию для окна имеет вид RANGE МЕЖДУ UNBOUNDED PRECEDING и CURRENT ROW, но я оставил это там, чтобы быть явным.
Этот запрос действительно медленный, примерно на порядок медленнее, чем старый неработающий запрос, который заполнял 0 для совокупного числа.Любые предложения для других методов для генерации кумулятивных чисел?
Я посмотрел на решения здесь: Промежуточный итог по сгруппированным записям в таблице
RDBM, которые я используюэто Vertica.Vertica SQL исключает первое решение для подбора, и планировщик запросов прогнозирует, что второе решение для левого внешнего соединения примерно в 100 раз дороже, чем аналитическая форма, которую я показываю выше.