Будет возвращено количество результатов за каждую минуту (где у вас есть записи) за последний час
SELECT DATEPART(n, time_stamp) AS minute, COUNT(*) as results
FROM table_name
WHERE time_stamp > DATEADD(hh, -1, GETDATE())
GROUP BY DATEPART(n, time_stamp)
Это может вернуть менее 60 результатов, в зависимости от данных. Если вам нужно 60 результатов, запрос будет немного другим. При этом используется общее табличное выражение для генерации списка из 60 чисел и коррелированный подзапрос для получения результатов за каждую минуту:
WITH numbers ( num ) AS (
SELECT 1 UNION ALL
SELECT 1 + num FROM numbers WHERE num < 60 )
SELECT num AS minute,
(SELECT COUNT(*) AS results
FROM table_name
WHERE DATEPART(n, time_stamp) = num
AND time_stamp > DATEADD(hh, -1, GETDATE())
FROM numbers
Чтобы увидеть результаты, замените DATEADD (hh, -1, GETDATE ()) на DATEADD (mi, -15, GETDATE ()), и вы получите результаты за последние 15 минут и 0 для других минут.