1

これは以前の質問と似ていますが、同じではありません 。それは、日ごとのログ項目を要約する方法に関するものでした。私はこのSQLを使用しています。

SELECT 
  [DateLog] = CONVERT(DATE, LogDate), 
  [Sum] = COUNT(*)
FROM PerfRow
GROUP BY CONVERT(DATE, LogDate)
ORDER BY [DateLog];

ここで、任意の期間にわたって要約するように改善したいと思います。したがって、1 日あたりの合計ではなく、1 時間または 5 分あたりの合計です。これは可能ですか?

SQL Server 2008 R2 を使用しています

4

1 に答える 1

2

DATEADDとDATEPARTを使用してLogDateを丸めてから、それでグループ化できます。

例(5秒間隔でグループ化):

SELECT 
  [DateLog] = DATEADD(ms,((DATEPART(ss, LogDate)/5)*5000)-(DATEPART(ss, LogDate)*1000)-DATEPART(ms, LogDate), LogDate), 
  [Sum] = COUNT(*)
FROM 
(
    SELECT LogDate = '2013-01-01 00:00:00' UNION ALL
    SELECT LogDate = '2013-01-01 00:00:04' UNION ALL
    SELECT LogDate = '2013-01-01 00:00:06' UNION ALL
    SELECT LogDate = '2013-01-01 00:00:08' UNION ALL
    SELECT LogDate = '2013-01-01 00:00:10'
) a
GROUP BY DATEADD(ms,((DATEPART(ss, LogDate)/5)*5000)-(DATEPART(ss, LogDate)*1000)-DATEPART(ms, LogDate), LogDate)
于 2013-01-17T17:59:44.280 に答える