mySQL - 每秒数的结果

时间:2009-08-12 09:02:05

标签: mysql syntax

我试图解决(并且失败)我如何能够每秒获得会话数量(通常只使用该术语,不要太担心)。即我正在寻找保留。

我有一个表,它会定期更新会话处于活动状态的秒数。

我想得到一份清单: -

MAX(`time) - 即会话的最高秒数。

结果:秒:第二个会话数

我一直在努力的方式是

SELECT `projID`, COUNT(`sessionID`) AS `noSessions`, 
    MAX(`time`) as `endTime` 
FROM `MetricsLive` 
GROUP BY `sessionID` 
ORDER by `endTime` ASC

但这远远不是我所需要的,但我完全迷失了。有什么想法吗?

FORGIVE FORMATTING: -

我所拥有的表行数据: -

SESSSION \\ SECONDS 
ebsvmcrbob2irbobsrvu2hcfi5 \\ 4 
ebsvmcrbob2irbobsrvu2hcfi5 \\ 12 
ebsvmcrbob2irbobsrvu2hcfi5 \\ 18 
ebsvmcrbob2irbobsrvu2hcfi5 \\ 24 
ebsvmcrbob2irbobsrvu2hcfi5 \\ 32 

等。每次创建新条目时,它都会滚动插入一个新行。这里的想法是在会议结束多久后推断。所以,我想要

的结果
NoSessionsEnded \\ ATSECONDS 
4 \\ 12 
8 \\ 24 etc.

1 个答案:

答案 0 :(得分:0)

您可以使用UNIX_TIMESTAMP()函数将日期转换为自1970年以来的秒数。如果您对此进行分组,COUNT(*)将返回共享相同秒数的行数:

SELECT 
    projID, 
    COUNT(*) AS MaxSessionsPerSecond
FROM MetricsLive
GROUP BY UNIX_TIMESTAMP(endTime)
ORDER BY COUNT(*) DESC
LIMIT 1

ORDER BY和LIMIT行选择具有每秒最大会话数的projID。

如果您正在寻找每个项目的最高会话速率,请尝试:

SELECT
    projID,
    MAX(SessionsPerSecond) as MaxSessionsPerSecond
FROM (
    SELECT 
        projID, 
        COUNT(*) AS SessionsPerSecond
    FROM MetricsLive
    GROUP BY UNIX_TIMESTAMP(endTime)
) sub