2013-08-26 61 views
0

想象我有連續的事件蜂巢表T:如何選擇Hi​​ve中的每一對連續事件?

n 
--- 
1 
2 
3 
4 
... 

我需要編寫一些代碼來選擇每對從該表中連續的事件。目前,我有喜歡

select t1.n, min(t2.n) from t t1 join t t2 where t1.n < t2.n group by t1.n; 

這甚至對於相對較小的表(幾千行的),因爲它產生的表的臨時笛卡爾積本身(即O(N^2)複雜性)非常無效的解決方案。

我想找到更便宜的(希望線性)解決方案來解決同一個問題。

+0

這聽起來像是一種可以使用程序方法更容易解決的問題,例如,使用Python,假設你可以導出你的表的有序視圖。 – jkovacs

回答

1

此前0.11你可以使用UDF(例如Nexr's
目前只有一個lag功能,但應該這樣做在你的情況下,如果你會查詢:
select n as "next" , lag(n) "previous" from t;