HiveQL:将列的所有值除以列的最大值

HiveQL:将列的所有值除以列的最大值,hive,hiveql,Hive,Hiveql,如何将一列的所有值除以该列的最大值 例如,假设我有: id value 1 10 2 20 3 30 我想: id value 1 0.33333 2 0.66666 3 0.99999 我试过: SELECT col_a/MAX(col_a) FROM db.table 及 两次尝试都失败了,出现了很长的错误消息 当我复制粘贴下面第一个答案时,我能够让它的代码工作,但我无法用自己的表复制它的结果。我试过: WITH temp AS (SELECT * FROM mydb.ta

如何将一列的所有值除以该列的最大值

例如,假设我有:

id value
1  10
2  20
3  30
我想:

id value
1  0.33333
2  0.66666
3  0.99999
我试过:

SELECT col_a/MAX(col_a)
FROM db.table

两次尝试都失败了,出现了很长的错误消息

当我复制粘贴下面第一个答案时,我能够让它的代码工作,但我无法用自己的表复制它的结果。我试过:

WITH temp AS (SELECT * FROM mydb.tablenamehere)
SELECT colA/MAX(colA) OVER()
FROM temp;
而且:

USE mydb;
WITH temp AS (SELECT * FROM tablenamehere)
SELECT colA/MAX(colA) OVER()
FROM temp;
但我得到了以下两个错误:

FAILED: SemanticException Line 1:28 Table not found 'tablenamehere' in definition of CTE temp [
SELECT * FROM tablenamehere
] used as temp at Line 1:28
使用解析
max()

返回:

OK
1       0.3333333333333333
2       0.6666666666666666
3       1.0
Time taken: 80.474 seconds, Fetched: 3 row(s)

我试过你的密码。成功了。但我无法将其应用于我自己的代码。更多细节添加到我的原始帖子中。表mydb.tablenamehere真的存在吗?是的,它确实存在。你不需要那个临时CTE。只需尝试更简单的方法,如从db.table中选择value/MAX(value)OVER()问题是我有一个
id
列。所以我需要做:
从db.table GROUP BY id中选择id,value/MAX(value)
,它返回以下错误:
无法将窗口调用拆分为组。至少有1个组必须仅依赖于输入列。还要检查循环依赖关系。
with your_table as ( --use your table instead of this
select stack(3,
1,  10 ,
2,  20 ,
3,  30 ) as (id, value)
)

select id, value/max(value) over() as value 
  from your_table
order by id --remove order if not necessary
; 
OK
1       0.3333333333333333
2       0.6666666666666666
3       1.0
Time taken: 80.474 seconds, Fetched: 3 row(s)