我知道这应该很简单,但我似乎无法正确理解。我想加入表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
这有意义吗?
我知道可以使用group by
然后使用avg(
来聚合它们,但我不打算聚合,我想在这种情况下保留重复的平均值。
答案 0 :(得分:2)
您可以将over(partition by...)
与Avg
一起使用。
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
答案 1 :(得分:-2)
直接的解决方案是子查询:
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