mysql - 在一列中找出时间范围

标签 mysql sql average aggregate-functions mysql-5.7

我们有一个应用程序可以帮助人们找到其他篮球运动员一起玩。 我的任务是找出每个游戏参与者之间的平均时间 比如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/

相关文章:

PHP 数组总是有父 0 数组

mysql - 计算MySql中多次出现的子字符串

php - 在 php 中创建注册表

python - 找到一个函数来查找列表中相邻值之间的差异,然后针对阈值进行测试

php - 检查 MySQL 表中是否存在值,然后选择 [Laravel 5]

php - 在单个查询中获取约会列表并依次获取所有关联的注释?

mysql - 选择根据客户计算平均销售额,考虑首次销售额 MYSQL

java - 如何计算从控制台读取的整数序列的平均值?

php - 如何向mysql插入多行数据

sql - 更新查询需要时间来执行