Допустим, у меня есть таблица, как показано ниже
start_time end_time user_name
2019-01-01 00:00:05 2019-01-01 00:05:05 user1
2019-01-01 00:01:35 2019-01-01 00:06:05 user2
2019-01-01 00:02:05 2019-01-01 00:07:05 user3
2019-01-01 00:03:05 2019-01-01 00:08:05 user1
2019-01-01 00:04:05 2019-01-01 00:09:05 user2
Моя цель - узнать, сколько пользователей вошли в систему для МИНУТЫ .Скажите, как показано ниже
time active no of users
2019-01-01 00:00:00 1
2019-01-01 00:01:00 2
2019-01-01 00:02:00 3
2019-01-01 00:03:00 3
2019-01-01 00:04:00 3
Теперь я впервые попытался округлить время для нового столбца dateadd(mi, datediff(mi, 0, dateadd(s, 30, start_time)), 0)
.Итак, я получу, как указано выше в таблице time
столбец
Далее я попытался найти счетчик для округленной даты и времени, как показано ниже:
SELECT
dateadd(mi, datediff(mi, 0, dateadd(s, 30, start_time)), 0) as RoundedDateTime,
(
SELECT count(distinct(user_name))
FROM entrytable sh
WHERE (sh.end_time > dateadd(mi, datediff(mi, 0, dateadd(s, 30, t.start_time)), 0)
and sh.start_time <= dateadd(mi, datediff(mi, 0, dateadd(s, 30, t.start_time)), 0))
) as usercounter
FROM entrytable t
Но вышеупомянутый SQL-запрос выполняется дольше ипереходит в не отвечающий режим.
Я не смог решить проблему.Может кто-нибудь помочь?
Заранее спасибо!