在SQL中查找已登录用户的最大数量

时间:2010-03-08 17:18:25

标签: postgresql

我想密切关注我的应用程序的并发用户数。因此,我记录了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'EN'2010-02-23'运行查询,我希望看到2010-02-21最多为2。

这可能直接在SQL中使用(使用postgres)还是需要在PHP中解析结果?

谢谢, lleto

1 个答案:

答案 0 :(得分:3)

怎么样

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)