如何在sql中计算平均值而不将其分组?
我知道这应该很简单,但我似乎无法正确理解。我想联接表如何在sql中计算平均值而不将其分组?,sql,hive,Sql,Hive,我知道这应该很简单,但我似乎无法正确理解。我想联接表A和B,计算A中唯一项的平均值,而不对它们进行分组 表A ID code 1 10 1 19 2 10 2 11 表B code value 10 0.3 11 0.5 19 0.1 我想加入code,然后计算每个ID对应值的平均值: 生成的表应该是 ID codes average 1 10
A
和B
,计算A
中唯一项的平均值,而不对它们进行分组
表A
ID code
1 10
1 19
2 10
2 11
表B
code value
10 0.3
11 0.5
19 0.1
我想加入code
,然后计算每个ID
对应值的平均值:
生成的表应该是
ID codes average
1 10 0.2
1 19 0.2
2 10 0.4
2 10 0.4
这有意义吗
我知道一个人可以使用分组依据
,然后使用平均值(
来聚合它们,但我不想聚合,我想在这种情况下保留重复的平均值。你可以使用覆盖(分区依据…
)和平均值
SELECT A.ID
, A.CODE
, AVG(B.VALUE) OVER(PARTITION BY A.ID)
FROM TableA A
LEFT JOIN TableB B
on a.code = b.code
简单的解决方案是子查询:
SELECT A.ID, A.code,
(SELECT AVG(B.value)
FROM B INNER JOIN A A2 ON B.code = A2.code
WHERE A.id = B.id) AVERAGE
FROM A
它不会计算每个ID的平均值。是的,我不认为这会得到每个ID的平均值,它只会得到所有ID的平均值。抱歉,我误解了要求,现在已修复。表
B
中没有ID,您需要行其中A.ID=B.ID
您想要拿回您的钱吗?希望您能找出详细信息om here.Good.这在HIVE中似乎不起作用,因为我认为语言功能不受支持。