我使用的是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
这给了我后面的六行,但我需要的是前面六行的总和。如有任何帮助,将不胜感激
Mike
您可以使用:
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