我有一个带有时间序列数据的表 S,如下所示:
key day delta
对于给定的密钥,可能但不太可能会丢失几天。
我想从增量值(正整数)构造一个累积列,以便将此累积数据插入另一个表。这是我到目前为止所得到的:
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 BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW,但我把它留在那里是明确的。
这个查询真的很慢,比旧的损坏查询慢了一个数量级,它用 0 填充累积计数。对于其他生成累积数字的方法有什么建议吗?
我确实在这里查看了解决方案: 按表中的分组记录运行总计
我使用的 RDBM 是 Vertica。Vertica SQL 排除了第一个子选择解决方案,它的查询计划器预测第二个左外连接解决方案的成本大约是我上面显示的分析形式的 100 倍。