2017-07-12 7 views
0

ハイブで列を正規化しようとしています。つまり、列の各値をその列の最大値で割る必要があります。例えば:私は、テーブルXを持っている:ハイブの列を正規化する方法は?

A B C D 
1 0.1 3 0.2 
2 0.2 4 0.5 
3 0.3 5 0.2 

私はC列を正規化したい、要求されたテーブルYは次のとおりです。

A B C D 
1 0.1 0.6 0.2 
2 0.2 0.8 0.5 
3 0.3 1 0.2 

私はの最大値を表現するためにSQLを記述する方法がわかりません列全体

答えて

3

maxウィンドウ関数

select a 
     ,b 
     ,c/max(c) over() as c 
     ,d 

from x 

+---+-----+-----+-----+ 
| a | b | c | d | 
+---+-----+-----+-----+ 
| 1 | 0.1 | 0.6 | 0.2 | 
| 2 | 0.2 | 0.8 | 0.5 | 
| 3 | 0.3 | 1 | 0.2 | 
+---+-----+-----+-----+ 
0

X

からD
+0

、この

は、A、B、C /(XからMXA(C)を選択)を選択し試してみますあなたはHiveタグを見た? –

関連する問題