[英]Subtract the difference from the others in the current row from the previous value in the column
[英]How to use the LAG function to subtract the last previous record from current and place this value in a new column for Database Growth
我正在尝试计算数据库增长,并使用滞后 function 来执行此操作:
在我的示例中.. 我希望从当前天数中减去前几天的值并显示在 Difference_Previous_Day 列中,这是为了显示每日增长,
因此,例如,我希望我在 21-11-2021 当天的最新记录 UsedSpaceMB(2161706mb) 减去 USEDSpaceMB 前一天 (2158844mb),以便在当前日期 21-11-的“Difference_previous_Day”列中给我 2,862mb 2021 年等等,但我似乎得到了其他值,请参阅附件,有人看到我在这里做错了什么吗?
谢谢
USE DATABASEGrowth
--Working on grouping by month and calculating the difference
SELECT DBName AS DatabaseName,
Date AS CollectedDate,
MONTH(Date) AS Month,
DAY(Date) AS Day,
[UsedSpace(Mb)] AS UsedSpaceMB,
--CAST(SUM(CAST([Usedspace(Mb)] AS FLOAT)) / 1024 / 1024 AS DECIMAL(10, 3)) AS [Database Used Space GB],
--LAG([Usedspace(Mb)]) AS previous_day,
[Usedspace(Mb)] - LAG([Usedspace(Mb)],1,0)
--OVER (ORDER BY Date) AS difference_previous_day
OVER (ORDER BY Date) AS difference_previous_day
FROM DATABASEGrowth
GROUP BY DBName,
MONTH(Date),
Date,
[Usedspace(Mb)],
DAY(Date)
ORDER BY DatabaseName,
Date DESC,
DAY(Date),
MONTH(Date)
试图修改 SQL 来进行我需要的计算来查看我的每日增长。
看来您还有其他数据库 (DbName)。 您调用 LAG function 的方式没有为它们指定顺序; 因此可能会检索来自另一个数据库的行。 您可以使用 PARTITION BY 子句使其特定于每个数据库:
...
[Usedspace(Mb)]
- LAG([Usedspace(Mb)],1,0)
OVER (PARTITION BY DbName ORDER BY Date) AS difference_previous_day
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.