gpt4 book ai didi

mysql - SQL : get current online player count using login/logout timestamp

转载 作者:行者123 更新时间:2023-11-29 02:10:04 24 4
gpt4 key购买 nike

我有一个 MySQL 表,其中包含 uid、登录/注销状态平面、时间戳,例如:

uid    flag    time
123 login 10:00:00
123 logout 10:10:00
321 login 10:08:00
321 logout 10:18:00

现在我想显示 10:08 到 10:09 之间每分钟的在线玩家数。预期结果:

Minute    current_player_cnt 
10:07 1
10:08 2
10:09 2

我可以将数据导出为 csv 文件并使用 python 执行此操作,但我想直接使用 sql 执行此操作,但找不到可以提供帮助的函数。

不需要给整个sql语句,给个函数名就可以了。任何建议表示赞赏。

最佳答案

一种选择是使用日历表加入,例如

SELECT
t1.Minute,
COUNT(t2.uid) AS current_player_cnt
FROM
(
SELECT '10:07:00' AS Minute UNION ALL
SELECT '10:08:00' UNION ALL
SELECT '10:09:00'
) t1
LEFT JOIN
(
SELECT uid, MIN(time) AS login_time, MAX(time) AS logout_time
FROM yourTable
GROUP BY uid
) t2
ON t1.Minute BETWEEN t2.login_time AND t2.logout_time OR
(t1.Minute >= t2.login_time AND t2.login_time = t2.logout_time)
GROUP BY
t1.Minute;

enter image description here

Demo

关于mysql - SQL : get current online player count using login/logout timestamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54820898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com