Группа TSQL за N секунд - PullRequest
       15

Группа TSQL за N секунд

4 голосов
/ 01 апреля 2011

Я могу группировать по секундам или минутам что-то вроде следующего:

SELECT datepart(minute, Time)
      ,count(*) as hits
FROM Log
GROUP BY datepart(minute, Time)

Есть ли способ, которым я могу сделать то же самое, но с указанным количеством секунд, например, сгруппировать по "каждые 10 секунд"?

Подробнее:
Это в сочетании с периодом времени между:

SELECT datepart(minute, Time)
      ,count(*) as hits
FROM Log with (nolock)
WHERE Time between dateadd(minute, -2, getdate()) and getdate()
GROUP BY datepart(minute, Time)

1 Ответ

5 голосов
/ 01 апреля 2011

Попробуйте:

DATEDIFF (ss ,'19700101' ,Time )) даст количество секунд с 01.01.1970 (вы можете выбрать другую дату, которая меньше всех ваших дат).Разделите его на десять, чтобы иметь значение GROUP BY на каждые 10 секунд:

SELECT DATEDIFF (ss ,'19700101' ,Time )/10, count(*) as hits
  FROM Log
 GROUP BY DATEDIFF (ss ,'19700101' ,Time )/10

(со временем):

SELECT convert(varchar, min(Time), 108) time,
       DATEDIFF (ss ,'19700101' ,Time )/10 sec_interval,
       count(*) as hits
  FROM Log
 GROUP BY DATEDIFF (ss ,'19700101' ,Time )/10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...