对 MySQL 的平均日期比较

标签: sql MySQL
发布时间: 2017/1/9 21:41:45
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个名为 'game_logs' 结构如下表︰

id: integer
user_id: integer
game_id: integer
game_event_type_id: integer
timestamp: datetime

我要计算类型"3"的事件之间的平均时间差异 (game_event_type_id = 3) 具有相同的 user_id 和 game_id 的记录。

 id, user_id, game_id, game_event_type_id, timestamp
 '1', '45', '92', '3', '2014-06-02 15:36:04'
 '2', '45', '92', '3', '2014-06-02 15:36:17'
 '3', '45', '92', '3', '2014-06-02 15:36:25'
 '4', '20', '91', '3', '2014-06-02 15:37:15'

我一直在尝试不同的事物,但由 game_id 和 user_id 分组和计算平均在同一时间看上去具有挑战性。我留下加入到同一个表。

有人能帮我吗? 谢谢你 !

解决方法 1:

通过这样做,可获得平均相差的秒数︰

select user_id, game_id,
       (case when count(*) > 1
             then timestampdiff(second, min(timestamp), max(timestamp)) / (count(*) - 1)
        end) as AvgDiffSeconds
from game_logs gl
where game_event_type_id = 3
group by user_id, game_id;

其中关键的想法是平均差异是最大值减去最小值除以一个小于的记录数。

官方微信
官方QQ群
31647020