2017-06-06 20 views
1

我有一個表ABCD Oracle數據庫中如何實現Oracle的 「FUNC(...)保持(DENSE_RANK ...)」 在蜂巢

+-------------+----------+ 
    | abcd.speed | abcd.ab | 
    +-------------+----------+ 
    | 4.0   | 2  | 
    | 4.0   | 2  | 
    | 7.0   | 2  | 
    | 7.0   | 2  | 
    | 8.0   | 1  | 
    +-------------+----------+ 

而且我使用這樣的查詢:

select min(speed) keep (dense_rank last order by abcd.ab NULLS FIRST) MOD from abcd; 

我試圖將代碼轉換爲Hive,但它看起來像keep在Hive中不可用。
你能建議一個等效的語句嗎?

回答

1
select -max(struct(ab,-speed)).col2 as mod 
from abcd 
; 

+------+ 
| mod | 
+------+ 
| 4.0 | 
+------+ 
+0

沒有任何特殊原因,加上 「 - 」 符號。即使以下查詢也給出了類似的結果。從abcd中選擇max(struct(ab,speed)).col2作爲mod; – HiveRLearner

+0

沒有減號它就相當於'max(speed)keep(...)'。結果將是'7.0' –