我试图解决(并且失败)我如何能够每秒获得会话数量(通常只使用该术语,不要太担心)。即我正在寻找保留。
我有一个表,它会定期更新会话处于活动状态的秒数。
我想得到一份清单: -
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.
答案 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