Найти максимальное количество зарегистрированных пользователей в SQL - PullRequest
3 голосов
/ 08 марта 2010

Я хочу следить за количеством одновременных пользователей моего приложения. Поэтому я регистрирую time_start и time_stop. Если я теперь хочу запросить в базе данных максимальное количество зарегистрированных пользователей и вернуть дату начала, как бы я это сделал.

Таблица выглядит так:

 id |     time_start      |      time_stop   
----+---------------------+---------------------
  1 | 2010-03-07 05:40:59 | 2010-03-07 05:41:33
  2 | 2010-03-07 06:50:51 | 2010-03-07 10:50:51
  3 | 2010-02-21 05:20:00 | 2010-03-07 12:23:44
  4 | 2010-02-19 08:21:12 | 2010-03-07 12:37:28
  5 | 2010-02-13 05:52:13 | 

Когда time_stop пуст, пользователь все еще вошел в систему. В этом случае я ожидаю увидеть возвращение 2010-03-07, так как все пользователи (5) были зарегистрированы в этот момент. Однако, если бы я выполнил запрос с параметром 'where time_start BETWEEN' 2010-02-17 'И' 2010-02-23 ', я бы ожидал увидеть 2010-02-21 с максимумом 2.

Возможно ли это напрямую в SQL (с использованием postgres) или мне нужно проанализировать результаты в PHP?

Спасибо, Илето

1 Ответ

3 голосов
/ 08 марта 2010

Как насчет

SELECT COUNT(*)
FROM TABLE 
WHERE time_start <= enddate
AND (time_stop > enddate OR time_stop IS NULL)

Где конечная дата будет '2010-02-23'

OR

SELECT COUNT(*)
FROM TABLE 
WHERE time_start BETWEEN startdate AND enddate
AND (time_stop > enddate OR time_stop IS NULL)

Где начальная дата будет '2010-02-17', а конечная дата будет '2010-02-23'

Попробуйте использовать MAX на любую из желаемых дат, например,

SELECT  MAX(time_start),MAX(time_stop), COUNT(*)
FROM    @Table
WHERE   time_start between '17 Feb 2010' AND  '23 Feb 2010'
AND     (time_stop > '23 Feb 2010' OR time_stop IS NULL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...