Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Максимальное количество пользователей  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
Здравствуйте. Подскажите, пожалуйста, как решить такой вопрос?

Есть таблица:

UserLog:

UserId (nvarchar)
LoginDateTime (DateTime)
LogoutDateTime (DateTime)

Когда пользователь логинится в систему, то создается запись в этой таблице, пока что с пустым полем (минимальным значением) LogoutDateTime. Когда пользователь закрывает программу, то в этой записи обновляется поле LogoutDateTime.

Пусть задана определенная дата CalcDate. Каким образом для этой даты подсчитать максимальное количество одновременно работающих в системе пользователей?
15 ноя 12, 07:22    [13475992]     Ответить | Цитировать Сообщить модератору
 Re: Максимальное количество пользователей  [new]
aleks2
Guest
select count(*) from UserLog where @CalcDate between LoginDateTime and isnull(LogoutDateTime, getdate())


Тока нипанятна, причем тут "максимальное количество одновременно работающих в системе пользователей"?
15 ноя 12, 07:42    [13476004]     Ответить | Цитировать Сообщить модератору
 Re: Максимальное количество пользователей  [new]
aleks2
Guest
А! Дошло... наверное?

declare @t table(d datetime primary key clustered)

insert @t
select distinct LoginDateTime from UserLog where LoginDateTime between @CalcDate and DATEADD(day, 1, @CalcDate)

select MAX(cnt)
from
(select count(*) cnt
   from UserLog ul inner join @t t on t.d between LoginDateTime and isnull(LogoutDateTime, getdate()) group by t.d
 ) X
15 ноя 12, 07:47    [13476009]     Ответить | Цитировать Сообщить модератору
 Re: Максимальное количество пользователей  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2576
Eldar9x
Когда пользователь закрывает программу, то в этой записи обновляется поле LogoutDateTime
А если сессия пользователя отвалится, то результат подсчета нас обманет?
15 ноя 12, 10:08    [13476382]     Ответить | Цитировать Сообщить модератору
 Re: Максимальное количество пользователей  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
aleks2, спасибо! Работает.
Если сессия отвалится то в поле LogoutDateTime не будет ничего записано. В этом случае считаем, что сессия длится 24 часа. То есть считаем, что LogoutDateTime = LoginDateTime + 24 часа
15 ноя 12, 10:47    [13476620]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить