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)