MySQL中的平均日期值

时间:2014-06-26 14:45:01

标签: mysql sql

我有一个名为'game_logs'的表,其结构如下:

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

对于具有相同user_id和game_id的记录,我必须计算类型“3”(game_event_type_id = 3)的事件之间的平均时间差异。

 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进行分组并同时计算平均值似乎很有挑战性。我正在加入同一张桌子。

有人能帮助我吗? 谢谢!

2 个答案:

答案 0 :(得分:3)

您可以通过执行以下步骤获得平均差异:

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;

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

答案 1 :(得分:-1)

单个查询无法执行此操作。 要么使用存储过程,要么在应用程序端进行(在那里应该很容易)