我想添加一个新列,它是现有列的平均值,并且我不会在新列中每行显示相同的平均值。
桌子就像
我想要的是:
我知道在Excel中做起来非常容易,但是我想在SQL中做,该怎么办?
答案 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;