首页 > 解决方案 > 如何在不分组的情况下获得一列窗口平均值?

问题描述

我想添加一个新列,它是现有列的平均值,我不会在新列中显示每一行中相同的平均数。

桌子就像

原始表

我想要的是:

具有新平均列的表

我知道用 Excel 做起来超级容易,但我想用 SQL 做,我该怎么办?

标签: sqlsql-server

解决方案


您可以使用OVER窗口函数来计算平均值:

declare @t table (
  Id int primary key,
  Sales money not null
);

insert into @t (Id, Sales)
values
  (1,34),
  (2,23),
  (3,543),
  (4,234);

select t.Id, t.Sales, avg(t.Sales) over() as [Average]
from @t t;

如果您需要按任何标准对平均值进行分组,请将它们放入OVER(partition by ...).


推荐阅读