我有一张表,用于捕获备份文件大小和创建日期。我希望能够以比其他文件更快的速度跟踪哪些备份文件正在增长。如何设置查询以添加列以跟踪增长百分比或增长率?
示例数据:
Filename CreationDate Size
DB1 2017-06-19 13:00:28.450 96480
DB1 2017-06-20 13:00:36.627 97568
DB2 2017-06-18 22:00:00.800 19672
DB2 2017-06-19 22:00:00.370 19672
DB2 2017-06-20 22:00:00.913 19672
DB3 2017-06-18 22:00:04.520 17872840
DB3 2017-06-19 22:00:05.183 17873864
DB3 2017-06-20 22:00:06.400 17878984
编辑:我希望有2个单独的新列跟踪百分比变化。 Column1将是自最近一次以来的百分比变化(即昨天和今天之间的变化)。 Column2将是记录中最旧文件的百分比变化(即,在今天和特定文件名的最旧日期之间进行更改)。希望有所帮助。也不确定为什么我对这个问题投了反对。
答案 0 :(得分:0)
tSQL ...假设SQL服务器。您可以使用窗口函数来查看分区(文件名)中的下一条记录,从而可以在查询中执行百分比。
SELECT td.fileName
, td.creationdate
, td.size
, lag(td.size) over (partition by td.filename order by td.creationdate asc) / td.size as PercentChange
FROM TableData td
"魔法"在这里:lag(td.size) over (partition by td.filename order by td.creationdate asc)
这基本上说是返回与此文件名具有相同文件名的记录的大小,但是在评估记录之前是一个创建日期。
使用此功能,我们可以获得先前的值(如果存在)。然后做一些基本的数学运算。如果它是新尺寸/旧版或其它东西,我不确定你想要怎么做...注意如果size是一个整数,我们可能会涉及整数数学,所以你可能需要将大小转换为足够大小的十进制值(如果需要小数)