我们有一个应用程序可以帮助人们找到其他篮球运动员一起玩。 我的任务是找出每个游戏参与者之间的平均时间 比如Game 2445,一个用户加入,然后一个,再一个。我想找出每个加入者之间的时间范围。
game_users 表具有以下格式
game_id | user_id | active | created_at
1234 |3455 | 1 | 2020-01-26 05:18:18
1234 |5673 | 1 |2020-02-16 04:16:15
1234 |2344 | 1 |2020-02-22 18:59:55
这里的created_at是指用户加入游戏的时间
如何了解用户加入游戏所需的平均时间?
最佳答案
首先你需要找出两个连接之间的时间差,你可以使用窗口函数 LEAD()
和 TIMESTAMPDIFF()
(在我的版本中我展示小时的差异,您可以将其更改为对您有意义的任何值),然后您可以使用 cte 计算平均值:
;with cte as (
SELECT
*
,TIMESTAMPDIFF(HOUR, created_at ,LEAD(created_at) OVER (Partition by game_id order by created_at)) as TimeDifference
FROM game_users
)
SELECT
game_id
, AVG(TimeDifference) as avgTimedifference
FROM cte
GROUP BY game_id
关于mysql - 在一列中找出时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65137384/