我有一個表S採用這樣的時間序列數據:優化Vertica的SQL查詢做運行總計
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味道,默認窗口子句之間的範圍內UNBOUNDED PRECEDING AND CURRENT ROW,但我離開了,在那裏是明確的。
這個查詢非常慢,就像比舊的斷開的查詢慢了一個數量級,這個斷開的查詢填充了0個累計計數。對於其他方法生成累計數字的任何建議?
我沒有看這裏的解決方案: Running total by grouped records in table
我使用的RDBMS是Vertica的。 Vertica SQL排除了第一個子查詢解決方案,其查詢規劃人員預測第二個左外連接解決方案的成本要比上面顯示的分析形式高出大約100倍。
你已經爲這個表定義什麼預測?多少行和不同的密鑰? 「非常緩慢」的速度有多慢? – 2011-09-20 19:06:07
你在桌上有多少行?你如何劃分/分割該表的主投影? – mtrbean
對我來說很難理解!您能否提供具有所需輸出的樣本數據? – AK47