首页 > 解决方案 > SQL Server 需要前 6 行的总数

问题描述

我正在使用 SQL Server,我需要获取表中前 6 行的总和,并将结果放在它自己的列中。

我可以通过以下查询找回第 6 行:

SELECT id
,FileSize
,LAG(FileSize,6) OVER (ORDER BY DAY(CompleteTime)) previous
FROM Jobs_analytics 
group by id, CompleteTime, Jobs_analytics.FileSize

这给了我六行,但我需要的是之前所有六行的总和。任何帮助将不胜感激

麦克风

标签: sqlsql-serversum

解决方案


您可以使用:

SELECT ja.id, ja.FileSize, CompleteTime, 
       SUM(FileSize) OVER (ORDER CompleteTime ROWS BETWEEN 5 PRECEDING AND CURRENT ROW) as previous
FROM Jobs_analytics ja;

我不明白为什么GROUP BY是必要的。没有聚合函数。

请注意,这需要 6 天,包括当天。如果您想要前六

SELECT ja.id, ja.FileSize, DATE, 
       SUM(FileSize) OVER (ORDER BY CompleteTime ja.id ROWS BETWEEN 6 PRECEDING AND 1 PRECEDING) as previous
FROM Jobs_analytics ja

推荐阅读