繁体   English   中英

如何使用 LAG function 从当前记录中减去最后一条记录并将此值放入数据库增长的新列中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM