Query Records and Group por um período de tempo
Tenho um aplicativo que pode ser executado várias vezes ao dia. Cada execução resulta em dados gravados em uma tabela para relatar eventos que ocorreram. A tabela principal do relatório é mais ou menos assim:
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
Posso dizer que havia duas execuções, mas gostaria de poder consultar um intervalo de datas, o número de vezes que o processo foi executado. Gostaria de ter uma consulta que resulte no horário em que o processo foi iniciado e no número de arquivos no grupo. Essa consulta me dá o que eu quero em termos de: posso ver em que dia e hora e quantos arquivos foram executados, mas não exatamente como eu gostaria. E não acomodaria execuções que corriam das 8:58 às 9:04, por exemplo. Também agruparia corridas que começaram às 9:02 e 9:15, por exempl
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)
Entendo que quaisquer execuções próximas umas das outras provavelmente serão agrupadas, e estou bem com isso. Só espero obter um agrupamento aproximado.
Obrigado