2017-06-06 5 views
1

では、Oracleの "FUNC(...)キープ(DENSE_RANKを...)" を実装するにはどうすればはハイブ

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

OracleのDB内のテーブルABCDを持っていると私は、このようなクエリを使用しています:

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

コードをハイブに変換しようとしていますが、keepはハイブでは使用できません。
同等の声明を提案できますか?

答えて

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

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

追加するための具体的な理由がある " - " 記号は。次のクエリでも同様の結果が得られます。 select max(struct(ab、speed)).col2をabcdからmodに変換します。 – HiveRLearner

+0

マイナス記号がなければ、 'max(speed)keep(...)'と等価になります。結果は「7.0」 –