如何不对窗口平均值进行分组而将其分组?

时间:2019-04-28 01:47:35

标签: sql sql-server

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

桌子就像

orignal table

我想要的是:

a table with a new average column

我知道在Excel中做起来非常容易,但是我想在SQL中做,该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用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 ...)

答案 1 :(得分:0)

您可以在整个表格的窗口函数中使用AVG

SELECT id, sales, AVG(sales) OVER() AS [avg]
FROM dbo.Sales;