0
比方說,我有一個非常簡單的表是這樣的:蜂巢QL差異
ID: Integer
A 4
A 9
A 2
B 4
B 7
B 3
我想GROUPBY(ID)。什麼會,告訴我的最小差異適當的查詢 - 這樣
ID: MIN_DIF:
A 2
B 1
查詢的簡單,現在比效率更重要,但無論是最基本和最有效的查詢,將不勝感激。
旁註:查找的平均距離將是一個獎金,但我需要分鐘首次
比方說,我有一個非常簡單的表是這樣的:蜂巢QL差異
ID: Integer
A 4
A 9
A 2
B 4
B 7
B 3
我想GROUPBY(ID)。什麼會,告訴我的最小差異適當的查詢 - 這樣
ID: MIN_DIF:
A 2
B 1
查詢的簡單,現在比效率更重要,但無論是最基本和最有效的查詢,將不勝感激。
旁註:查找的平均距離將是一個獎金,但我需要分鐘首次
您可以使用lag()
或lead()
:
select id, min(int - prev_int)
from (select t.*, lag(int) over (partition by id order by int) as prev_int
from t
) t
group by id
where prev_int is not null;
的另一種方法避免了窗口的功能,但或許會更糟糕性能爲:
select t.id, min(t2.integer - t.integer)
from t join
t t2
on t.id = t2.id
where t2.integer > t.integer
group by t.id;
[apache語言手冊](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF)不包含inc魯德滯後還是領先? – knowads
@knowads。 。 。在這裏檢查:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+WindowingAndAnalytics。 –