如何在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中似乎不起作用,因为我认为语言功能不受支持。