我有一个名为S的数据表,其中包含如下时间序列数据:
在我的SQL版本中,默认的窗口子句是RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW,但我把它留在那里以明确表达。这个查询非常慢,与旧的错误查询相比,慢了一个数量级,后者填充了累计计数的0。有没有其他方法来生成累计数字?我确实查看了这里的解决方案: Running total by grouped records in table。 我使用的RDBMs是Vertica。Vertica SQL排除了那里的第一个子选择解决方案,其查询计划器预测第二个左外连接解决方案的成本大约是我上面展示的分析形式的100倍。
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。有没有其他方法来生成累计数字?我确实查看了这里的解决方案: Running total by grouped records in table。 我使用的RDBMs是Vertica。Vertica SQL排除了那里的第一个子选择解决方案,其查询计划器预测第二个左外连接解决方案的成本大约是我上面展示的分析形式的100倍。