按时间块查询记录和分组
|
我有一个可能每天运行几次的应用程序。每次运行都会产生写入表的数据,以报告发生的事件。主报告表如下所示:
Id SourceId SourceType DateCreated
5048 433 FILE 5/17/2011 9:14:12 AM
5049 346 FILE 5/17/2011 9:14:22 AM
5050 444 FILE 5/17/2011 9:14:51 AM
5051 279 FILE 5/17/2011 9:15:02 AM
5052 433 FILE 5/17/2011 12:34:12 AM
5053 346 FILE 5/17/2011 12:34:22 AM
5054 444 FILE 5/17/2011 12:34:51 AM
5055 279 FILE 5/17/2011 12:35:02 AM
我可以说有两次运行,但是我希望有一种方法可以查询日期范围(运行过程的次数)。我想查询一个查询,该查询导致进程开始的时间和组中的文件数。这种查询可以让我得到所需的信息,因为我可以看到什么日期和时间以及运行了多少文件,但不完全是我想要的。例如,它不能适应从8:58到9:04的运行。例如,它还会对从9:02和9:15开始的运行进行分组。
Select dateadd(day,0,datediff(day,0,DateCreated)) as [Date], datepart(hour, DateCreated) as [Hour], Count(*) [File Count]
From MyReportTable
Where DateCreated between \'5/4/2011\' and \'5/18/2011\'
and SourceType = \'File\'
Group By dateadd(day,0,datediff(day,0,DateCreated)), datepart(hour, DateCreated)
Order By dateadd(day,0,datediff(day,0,DateCreated)), datepart(hour, DateCreated)
我知道,所有接近的运行都可能会归为一组,对此我很好。我只希望得到一个大致的分组。
谢谢!
没有找到相关结果
已邀请:
2 个回复
熊融炭臀陛
我称它为DataRunStarts 现在,您可以使用它来获取有关组的开始和结束位置的信息
我将其称为DataRunGroups。我将最后一个字段称为“ Excluded \”,因为它持有的ID只是用来定义将被拉出的ID集的结束边界。 现在我们可以使用DataRunGroups和MyReportTable来获取计数
我称它为DataRunCounts 现在,我们可以将DataRunGroups和DataRunCounts放在一起以获取开始时间和计数。
根据您的设置,您可能需要对一个查询执行所有这些操作,但是您可以理解。另外,第一次运行和最后一次运行都不会包括在其中,因为第一次运行将没有开始ID,最后一次运行也没有结束ID。要包括这些内容,您将仅对这两个范围进行查询,并将它们与旧的DataRunGroups查询一起合并以创建新的DataRunGroups。使用DataRunGroups的其他查询将如上所述工作。
勘掸府迫路
编辑 要达到15分钟的分辨率,请将最后一列更改为
(将+1添加到选择中以获得1,2,3,4)。