在PostgreSQL中,创建并附加一个新列

时间:2017-12-20 17:35:53

标签: sql postgresql

我想获得每种类型的平均值,然后将聚合表作为原始表中的新列加入。这是我尝试做的可视化和代码:

-- The original table --

ID | Cnt | Type
 1    5     A
 1    6     A   
 2    4     B

-- New Table -- 

ID | Cnt | Type | Avg
 1    5     A     5.5
 1    6     A     5.5
 2    4     B     4.0

到目前为止我写的代码如下:

select AVG(Cnt)
  from old
group by(type)
right join on old

但是,显然它不正确,因为引发了语法错误。对此有什么解决方法?如果我的问题类似于现有问题,我会提前道歉。

1 个答案:

答案 0 :(得分:1)

使用窗口功能:

select o.*, avg(cnt) over (partition by type)  
from old o;