Hive 在配置单元中缩放介于0和1之间的列值

Hive 在配置单元中缩放介于0和1之间的列值,hive,hiveql,Hive,Hiveql,我有一个名为table1的表,其中包含以下列:- ID count1 count2 A 3 5 B 1 7 C 2 9 我需要列-count1和count2的值介于0和1之间。我需要在配置单元中根据数据大小执行此操作。最后一个表应该如下所示:- ID count1 count2 A 1 0 B 0 0.5 C 0.5 1 我编写以下查询:- select a.ID, (((a.count1-

我有一个名为table1的表,其中包含以下列:-

ID  count1  count2
A   3       5
B   1       7
C   2       9
我需要列-count1和count2的值介于0和1之间。我需要在配置单元中根据数据大小执行此操作。最后一个表应该如下所示:-

ID  count1  count2
A   1       0
B   0       0.5
C   0.5     1
我编写以下查询:-

select a.ID, 
(((a.count1-min(a.count1))/(max(a.count1)-min(a.count1))),
(((a.count2-min(a.count2))/(max(a.count2)-min(a.count2)))
from table1 as a;
此查询提供了一个关于列ID的分组错误


请协助在hiveql中执行此操作。

这可以通过使用
min
max
窗口功能来完成。空的
over()
子句计算列中所有值的聚合。由于窗口函数不是聚合函数,因此不需要按分组

select ID, 
(count1-min(count1) over())/(max(count1) over()-min(count1) over()),
(count2-min(count2) over())/(max(count2) over() -min(count2) over())
from table1