gpt4 book ai didi

sql-server - 用于计算运行平均值列的 SQL Select 语句

转载 作者:行者123 更新时间:2023-12-02 14:17:02 28 4
gpt4 key购买 nike

我试图在 SELECT 语句中根据同一 SELECT 语句中前 n 行的列创建运行平均值列。我需要的平均值基于结果集中的前 n 行。

让我解释一下

Id        Number       Average
1 1 NULL
2 3 NULL
3 2 NULL
4 4 2 <----- Average of (1, 3, 2),Numbers from previous 3 rows
5 6 3 <----- Average of (3, 2, 4),Numbers from previous 3 rows
. . .
. . .

Average 列的前 3 行为空,因为没有先前的行。平均值列中的第 4 行显示前 3 行的数字列的平均值。

我需要一些帮助来尝试构建执行此操作的 SQL Select 语句。

最佳答案

这应该可以做到:

--Test Data
CREATE TABLE RowsToAverage
(
ID int NOT NULL,
Number int NOT NULL
)

INSERT RowsToAverage(ID, Number)
SELECT 1, 1
UNION ALL
SELECT 2, 3
UNION ALL
SELECT 3, 2
UNION ALL
SELECT 4, 4
UNION ALL
SELECT 5, 6
UNION ALL
SELECT 6, 8
UNION ALL
SELECT 7, 10

--The query
;WITH NumberedRows
AS
(
SELECT rta.*, row_number() OVER (ORDER BY rta.ID ASC) AS RowNumber
FROM RowsToAverage rta
)

SELECT nr.ID, nr.Number,
CASE
WHEN nr.RowNumber <=3 THEN NULL
ELSE ( SELECT avg(Number)
FROM NumberedRows
WHERE RowNumber < nr.RowNumber
AND RowNumber >= nr.RowNumber - 3
)
END AS MovingAverage
FROM NumberedRows nr

关于sql-server - 用于计算运行平均值列的 SQL Select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/911326/

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