gpt4 book ai didi

sql - 获取 T-SQL 中列的运行平均值

转载 作者:行者123 更新时间:2023-12-03 01:13:29 25 4
gpt4 key购买 nike

好的,我有一个表,其中一列有一些数据,第二列是数据的平均值。示例

id|Data|avg
1 |20 |20
2 |4 |12
3 |18 |14

如何使用 T-SQL 将数据列的运行平均值填充到插入时的 avg 列?

编辑:抱歉各位,这实际上是我犯的一个愚蠢的错误。我假设我有 SQL 2014,但在尝试 Stephan 的代码并出现一些错误后,我回去确认并意识到我使用 SQL 2008。对于错误信息,我深表歉意。我还更新了标签

最佳答案

插入时,假设id是一个身份,并且您只需放入data:

insert into table t(id, data, avg)
select @data, @data * (1.0 / n) + avg * (n - 1.0)/n
from (select count(*) as cnt, avg(data) as avg
from t
) t;

在 SQL Server 2012+ 中,只需将其输出即可很容易:

select t.*, avg(data) over (order by id) as cume_avg
from table t

在 SQL Server 2012 之前,您可以使用相关子查询或apply来执行此操作:

select t.*,
(select avg(data)
from table t2
where t2.id <= t.id
) as cume_avg
from table t;

如果表很大,性能可能会受到影响。但是,id, data 上的索引会有所帮助。

关于sql - 获取 T-SQL 中列的运行平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29657160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com